最近工作中用到了一个叫 cJSON 的轻量级 JSON 解析器,感觉挺好用的,就做个笔记记录一下。
man pages 创建
因为最近要搭建一个项目框架,所以这段时间都在研究一些相关的技术。比如怎么安排项目目录、怎么选 LICENSE、怎么用 Makefile 搞构建啊等等。今天就轻松一下,来看看 man 手册这个东西。看要怎么给自己的程序搞一个 man 手册,然后怎用 Makefile 安装上去。
C 分段初始化字符数组
今天在研究怎么获取 linux 系统上 pci 设备相关的信息的时候,发现了 pciutils 这个工具(以后再讲这个工具)。然后打开 github,下载源码,打开 vscode,一套行云流水。
一看目录结构和 LICENSE,是个标准的 GNU 项目,GNU 项目一般使用getopt
解析参数。
C 语言中的__attributes__
__attributes__()
是 GNU C 支持的一个机制,因此使用该机制需要确保 GNU C 标准适用于你的编译器,__attributes__()
可放置在函数、变量或类型的声明前,从而使得编译器对该内容进行某些特殊处理。
c 基础
编译器内置标准预定义宏:
__LINE__
:在源代码中插入当前源代码行号;
__FILE__
:在源文件中插入当前源文件名;
__DATE__
:在源文件中插入当前的编译日期;
__TIME__
:在源文件中插入当前编译时间;
__FUNCTION__
:在源文件中插入当前方法名;
__STDC__
:当要求程序严格遵循 ANSI C 标准时该标识被赋值为 1;
__VA_ARGS
:代表可变参数...
;
__cplusplus
:当编写 C++ 程序时该标识符被定义。
同时#line 可用来重新设定__LINE__
的值,举例如下:
1 |
|
输出为:
4
150
qemu compile
ubuntu18.06 中的 qemu 版本不带 CAN,因此需要自己编译最新版的 qemu。
xilinx qemu
本文描述如何在 QEMU 中启动 xilinx 设备,并启动 xilinx 官方提供的系统镜像
eclipse cdt 调试问题
在测试集成 eclipse 客户端的时候发现两个添加断点的问题
Boot Assist Module(BAM)
对于绝大多数 mpu/cpu 来说,上电之后 pc 都会进到一个约定俗成的地址,这个地址一般由芯片设计厂商设置,但是也有支持设备集成厂商修改的 mpu/cpu,如 ppc 的 e200z7 就可通过 p_rstbase[0:29] 设置上电地址。
对于一般的板级设备开发,使用 cpu/mpu 默认的地址就好了;但是也有比较高级的设备,它在设备集成的时候内建了一个 boot 程序,cpu 上电后进入到约定地址,即 boot 程序地址,然后再由 boot 程序加载操作系统。这就是当前 pc 机的做法,而对于简单的嵌入式设备一般是不会内建 boot 程序的。
BAM(Boot Assist Module)就是这样的一个 boot 程序,我在 QEMU 中实现 mpc5675 的时候所遇到的一个问题就是无法确定加载程序的 entry 地址,而在其他固定上电地址的板级设备中则可确定 entry 地址为默认上电地址。
QEMU monitor 与 QMP
由于 QEMU 版本不同可能会导致具体的内容不同,因此本文只介绍 QEMU monitor 和 QMP 的概念与使用,详细的命令建议查阅相应版本的指导手册。