__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 的概念与使用,详细的命令建议查阅相应版本的指导手册。
QEMU timer 模块分析
qemu 中所有的与时间相关的模块都基于timer.h
和qemu-timer.c
实现,包括 arm 的计时器arm_timer.c
以及通用的倒数计时器ptimer.c
,本文分析 timer.h 文件,探究 qemu 中 timer 的机制和原理,再实现一个自己的加数计时器itimer.c
QEMU arm 大小端问题
在 qemu2.7.1 上开发 tms570ls3137 板级设备时,遇到了一个大小端的问题。本文将详细描述该问题,并对测试过程进行记录。
C 学习笔记
本文为《C Primer Plus》读书笔记。