随笔分类 -  C/CPP/ASM

Ubuntu下串口工具 PicoCOM 的使用和时间戳显示
摘要:Ubuntu下的串口软件, 除了 CuteCOM, screen, MiniCOM 以外, 还有一个和 MiniCOM 很像的 PicoCOM. 最近在调试 CH340C 串口的过程中, 发现只有 PicoCOM 的连接Reset才能正常工作, 因此单独记录一下. 阅读全文

posted @ 2023-05-14 19:43 Milton 阅读(898) 评论(0) 推荐(1) 编辑

ADPCM(自适应差分脉冲编码调制)的原理和计算
摘要:ADPCM 用于解决 DPCM 的差值宽度问题, 通过定义一个差值表(例如IMA ADPCM 中使用 89个固定差值, 取值从7到32767), 将差值的范围放宽到16bit, 此时差值在数组中的编号只需要6bit就可以表示(0 - 88), 再进一步只记录编号的变化值, 就将变化量压缩到了4bit. ADPCM算法并没用固定标准, 最常见的是IMA ADPCM. 以下以 IMA ADPCM 为例进行说明 阅读全文

posted @ 2022-11-22 20:39 Milton 阅读(4032) 评论(0) 推荐(0) 编辑

GCC Arm 12.2编译提示 LOAD segment with RWX permissions 警告
摘要:关于 LOAD segment with RWX permissions 警告, 这是 Binutils 2.39 引入的一个新的安全类型的警告, GCC在升级版本时会带着新版本的 Binutils 一起发布. 如果要消除这个警告, 要么修改ld文件, 要么屏蔽掉它. 阅读全文

posted @ 2022-10-05 21:49 Milton 阅读(8000) 评论(1) 推荐(2) 编辑

GCC Arm 11.3rel1, 12.2编译提示 _close is not implemented and will always fail
摘要:使用GCC Arm工具链开发的项目, 在11.2下编译正常, 但是升级到 arm-gnu-toolchain-11.3.rel1 以及 arm-gnu-toolchain-12.2 之后, 编译出现警告 /opt/gcc-arm/arm-gnu-toolchain-11.3.rel1-x86_64- 阅读全文

posted @ 2022-10-05 10:26 Milton 阅读(3810) 评论(0) 推荐(1) 编辑

SDCC 的 MCS-51 汇编基础概念和传参方式
摘要:SDCC汇编函数参数传递, 第一个参数和返回值总是使用全局寄存器 DPL, DPH, B 和 ACC, 对于第二个及之后的参数, 分非重入方法和重入方法两种情况, 可能存储在全局变量中也可能存储在堆栈上 阅读全文

posted @ 2022-01-23 21:06 Milton 阅读(2205) 评论(0) 推荐(0) 编辑

STC8PROG - Linux下的 STC8A, STC8F, STC8G, STC8H 烧录工具
摘要:在Ubuntu20.04下测试的, 支持X86 64位的Linux环境, 支持型号为 STC8G, STC8H, STC8A8K64D4, STC15系列, 经过实际测试的型号: STC8G1K08A, STC8H1K08, STC8H3K32S2, STC8H3K64S4, STC8A8K64D4, STC8H8K64U, STC15F104W, STC15W104, STC15W408AS, 用于解决在Linux下stcgal无法烧录STC8系列的芯片的问题. 阅读全文

posted @ 2021-12-24 23:11 Milton 阅读(2297) 评论(4) 推荐(2) 编辑

联盛德 HLK-W806 (十二): Makefile组织结构和编译流程说明
摘要:通过 WM-SDK-W806 这个项目, 实例分析一下C语言项目中 Makefile 的组织结构. 从项目中与make相关的文件, 可以看到这是一个递归make的结构. 主要的文件都已经在结构中标出. 执行`make`时, 先执行主Makefile, 主Makefile中依次包含conf.mk, inc.mk, rule.mk. 行进到rule.mk, 在其中中执行指定的目标, 如果未指定, 则执行默认的all目标. 这里重点分析rule.mk文件, 因为这里定义了所有的规则, 以及对应的目标处理关系 阅读全文

posted @ 2021-12-20 23:37 Milton 阅读(2208) 评论(0) 推荐(0) 编辑

GCC项目的文件组织和编译步骤分解
摘要:C项目的文件组织和编译 C项目的代码, 由头文件(.h后缀)和C文件(.c后缀)组成 C语言的函数和变量, 分声明和定义两个阶段 头文件和C文件是等价的, 相当于C文件的一部分, 其功能由人为划分, 用于变量和函数的声明, 头文件也可以用于变量和函数的定义(但是不推荐) 同一个编译中, 函数在一处定 阅读全文

posted @ 2021-08-24 18:38 Milton 阅读(687) 评论(0) 推荐(0) 编辑

51单片机封装库HML_FwLib_STC89/STC11
摘要:HML_FwLib_STC89/11 项目地址 https://github.com/MCU-ZHISHAN-IoT/HML_FwLib_STC89 https://github.com/MCU-ZHISHAN-IoT/HML_FwLib_STC11 这些项目主要是封装了8051和STC89, ST 阅读全文

posted @ 2021-08-06 19:52 Milton 阅读(1345) 评论(0) 推荐(0) 编辑

QT & C++笔记
摘要:语法 变量声明 直接声明的变量, 其赋值操作会产生值拷贝, 例如 QString b("some text"); QString a(b); int a = 10; int b = a; 对于QList, QMap容器, 赋值操作是值拷贝, 例如下面的b变量会得到一份a的拷贝. QStringLis 阅读全文

posted @ 2020-05-28 12:23 Milton 阅读(694) 评论(0) 推荐(0) 编辑

QT C++工程CI环境笔记
摘要:开发环境 Ubuntu18.04 or Ubuntu20.04 Qt Creator 4.6.x (Based on Qt 5.11.x) APT list: apt-transport-https git dh-make build-essential autoconf autotools-dev 阅读全文

posted @ 2020-05-19 19:22 Milton 阅读(1246) 评论(0) 推荐(1) 编辑

Win7 / Win10 下 msys64 安装 MinGW-w64 工具链
摘要:1. 安装msys64 下载MSYS2安装文件 https://www.msys2.org/ 镜像 https://mirrors.ustc.edu.cn/msys2/distrib/x86_64/ 镜像 https://mirrors.tuna.tsinghua.edu.cn/msys2/dist 阅读全文

posted @ 2019-11-06 19:33 Milton 阅读(3076) 评论(0) 推荐(0) 编辑

C语言笔记
摘要:等号赋值的返回 将等号赋值表达式作为返回值, 返回的是被赋值的变量的值. 例如 int x = 10; int y = (x += 1); 其结果是 x = 11, y = 11 可以通过 int a = b = c = 10 协助记忆, 因为如果返回的不是10, 那么a和b就不会被赋值为10 if 阅读全文

posted @ 2019-11-04 21:43 Milton 阅读(325) 评论(0) 推荐(0) 编辑

Redis C客户端Hiredis代码分析
摘要:初始化 redisContext - Redis连接的上下文 每一次连接成功, 都会创建一个redisContext数据, 用于后续的操作 redisReader - 结果读取 redisReader在redisContext中使用redisReplyObjectFunctions参数进行初始化, 阅读全文

posted @ 2018-08-31 12:25 Milton 阅读(1764) 评论(0) 推荐(0) 编辑

Ubuntu18.04中配置wxWidget3.0.4开发环境
摘要:准备工作 在 https://www.wxwidgets.org/downloads/ 下载最新的稳定版 wxWidgets-3.0.4.tar.bz2 安装依赖 编译安装 checkinstall会需要准备好package的描述等, 详细的输入输出. 使用checkinstall会同时生成deb包 阅读全文

posted @ 2018-08-28 14:32 Milton 阅读(2481) 评论(0) 推荐(0) 编辑

C++比较特殊的构造函数和初始化语法
摘要:C++的构造函数 看Qt创建的示例函数, 第一个构造函数就没看懂. 是这样的 Notepad::Notepad(QWidget *parent) : QMainWindow(parent), ui(new Ui::Notepad) { ui->setupUi(this); } 语法 - 使用初始化列 阅读全文

posted @ 2018-08-26 23:32 Milton 阅读(796) 评论(0) 推荐(0) 编辑

QT5.x开发环境配置
摘要:准备工作 参考 https://wiki.qt.io/Install_Qt_5_on_Ubuntu . # 安装g++ sudo apt install build-essential # sudo apt install libfontconfig1 # 安装openGL支持 sudo apt i 阅读全文

posted @ 2018-08-25 22:59 Milton 阅读(6494) 评论(0) 推荐(0) 编辑

Ubuntu x86-64汇编(6)
摘要:寻址方式 Addressing Modes 地址和值 Addresses vs Values 在64bit架构中, 地址是64bit. 访问内存内容的唯一方式就是通过方括号, 不加方括号读取的只是地址, 例如 寻址方式 Addressing Modes 在访问内存时, 大多数情况下尺寸是明确的, 例 阅读全文

posted @ 2018-05-30 01:58 Milton 阅读(596) 评论(0) 推荐(0) 编辑

Ubuntu x86-64汇编(5) 控制指令
摘要:控制指令 Control Instructions 汇编的控制指令主要包含标签, 无条件跳转和有条件跳转几种 标签 Label 标签用于标记跳转的目的, 必须以字母开头, 后面跟着字母, 数字和下划线, 最后以冒号:结束yasm里的标签是区分大小写的 无条件跳转 Unconditional Cont 阅读全文

posted @ 2018-05-29 17:39 Milton 阅读(907) 评论(0) 推荐(0) 编辑

Ubuntu x86-64汇编(4) 数值操作指令
摘要:整数乘法指令 Integer Multiplication 对于有符号数的乘法有特殊的规则, 因此无符号数乘法和有符号数乘法对应着不同的指令mul和imul. 乘法会产生两倍尺寸的数值结果, 即两个n-bit数相乘会产生2n-bit的数. 两个8bit数相乘会产生16bit的数. 对于乘法指令有许多 阅读全文

posted @ 2018-05-28 23:58 Milton 阅读(741) 评论(0) 推荐(0) 编辑

导航