嵌入式开发中的细节
来源:互联网 发布:python怎么发音 编辑:程序博客网 时间:2024/06/08 19:55
这里列举一下嵌入式软件开发中容易遇到的几个简单但容易忽略的问题,一旦出现,会明显加大debug的难度。
1. 字节对齐的问题
在PC机上,变量地址不对齐对程序员来说不会有什么感觉,但是在嵌入式中可能就会导致程序不工作。
譬如如下这段代码
uint32_t base_addr = 0x4000000, value = 0x5a5a5a5a;for (i = 0; i < 1; i++) { writel (value, base_addr+i);}
在循环执行第一次时
writel (0x5a5a5a5a, 0x4000000); // 工作正常
但是在执行到下一个循环时变成了
writel (0x5a5a5a5a, 0x4000001); // break down
这时很多处理器,譬如arm,如果不支持非对齐访问,那么系统就崩溃了,如果当前没有什么先进的调试手段,只能通过点灯调试,那么即使是这样一个错误可能也要追踪好久,想想时间花在了这种地方估计就会觉得不太值得了。
2. 注意变量类型,特别是变量和常量做加法时
譬如有如下一段代码
#define CONFIG_OFFSET 0x10unsigned int *dmc = 0x4000000;func(dmc+CONFIG_OFFSET);
注:
func
是想要调用的函数
本来此时想要执行的是
func(0x4000010);
结果编译成了
func(0x4000040);
岂不是事与愿违了,这个时候看代码通常很难看出来,通过反汇编可以,但是也增加了不少调试时间。
0 0
- 嵌入式开发中的细节
- 嵌入式开发中的一些细节
- 嵌入式开发中的一些细节(dlmu2001)
- 嵌入式开发中的一些细节续(dlmu2001)
- 开发中的通用细节
- 开发中的细节
- 开发中的小细节
- 嵌入式底层开发的一些细节
- 嵌入式开发中的模拟器
- 嵌入式开发中的Volatile
- 嵌入式开发中的 链接
- 嵌入式开发中的常见问题
- Web开发中的小细节
- 开发WebView中的细节处理
- Android开发中的技术细节
- Servlet开发中的一些细节
- 开发中的一些小细节
- 嵌入式系统中的GUI开发
- SqlServer安装遇到的问题几则以及解决办法
- codeforce B. Chloe and the sequence (递归)
- vi/vim基本使用方法
- 【jzoj4922】【环】
- 利用TextInputLayout实现hint浮动显示(二)
- 嵌入式开发中的细节
- 读取文件,到标准输入流(c语言 和 c++版)
- 具有单选标记的菜单;auto关键字;CheckMenuRadioItem函数
- 数据结构-循环链表
- 【ife】任务六:通过HTML及CSS模拟报纸排版
- LeetCode 42. Trapping Rain Water
- 解决macos 10.12下 homebrew 一安装报错问题
- CEPH 分布式存储部署手册 (Ubuntu 14.04)
- html简单计算器