摘要:
数据指针 在嵌入式系统的编程中,常常要求在特定的内存单元读写内容,汇编有对应的MOV指令,而除C/C++以外的其它编程语言基本没有直接访问绝对地址的能力。在嵌入式系统的实际调试中,多借助C语言指针所具有的对绝对地址单元内容的读写能力。以指针直接操作内存多发生在如下几种情况: (1) 某I/O芯片被定位在CPU的存储空间而非I/O空间,而且寄存器对应于某特定地址; (2) 两个CPU之间以双端口RAM通信,CPU需要在双端口RAM的特定单元(称为mail box)书写内容以在对方CPU产生中断; (3) 读取在ROM或FLASH的特定单元所烧录的汉字和英文字模。 譬如:unsigned... 阅读全文
摘要:
使用宏定义 在C语言中,宏是产生内嵌代码的唯一方法。对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法。 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个: 错误做法:#define MIN(A,B) ( A 外部同步RAM > 外部异步RAM > FLASH/ROM 对于程序代码,已经被烧录在FLASH或ROM中,我们可以让CPU直接从其中读取代码执行,但通常这不是一个好办法,我们最好在系统启动后将FLASH或ROM中的目标代码拷贝入RAM中后再执行以提高取指令速度; 对于UART等设备,其内部有一定容量的接收BUFFER,我们应 阅读全文
摘要:
16位平台char 1个字节8位short 2个字节16位int 2个字节16位long 4个字节32位指针 2个字节32位平台char 1个字节8位short 2个字节16位int 4个字节32位long 4个字节long long 8个字节指针 4个字节64位平台char 1个字节short 2个字节int 4个字节long 8个字节(区别)long long 8个字节指针 8个字节(区别)为了保证平台的通用性,程序中尽量不要使用long数据库型使用int时也可以使用intptr_t来保证平台的通用性,它在不同的平台上编译时长度不同,但都是标准的平台长度,比如64位机器它的长度就是8字节, 阅读全文