嵌入式系统开发流程
嵌入式系统的一般开发流程如下:
嵌入式操作系统
- 管理资源
- 提高系统可靠性
- 硬件虚拟化
- 实时性能
- 多任务
现有的嵌入式操作系统
VxWorks pSOS PalmOS QNX OS-9 LynxOS WindowsCE uC/OS 嵌入式Linux FreeRTOS
ARM体系架构
ARM:Advanced RISC Machines
ARM处理器共有37个寄存器,分为若干个组(BANK)。
大多数数据操作都在寄存器中完成。
ARM分类
ARM7: 32bit 冯-诺依曼体系结构
计算机处理的数据和指令一律用二进制数表示;顺序执行;计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。
ARM9: 32bit 哈佛结构
使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;
使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。
ARM10E:支持DSP指令集
ARM11
SecureCore
StrongARM
Xscale
Cortex-M3
大端格式和小端格式
16bit宽的数0x1234在Little-endian模式(以及Big-endian模式)CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址 |
小端模式存放内容 |
大端模式存放内容 |
0x4000
0x34
0x12
0x4001
0x12
0x34
32bit宽的数0x12345678在Little-endian模式以及Big-endian模式)CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址 |
小端模式存放内容 |
大端模式存放内容 |
0x4000
0x78
0x12
0x4001
0x56
0x34
0x4002
0x34
0x56
0x4003
0x12
0x78
大端小端没有谁优谁劣,各自优势便是对方劣势:
小端模式 :强制转换数据不需要调整字节内容,1、2、4字节的存储方式一样。
大端模式 :符号位的判定固定为第一个字节,容易判断正负。
下面这段代码可以用来测试一下你的编译器是大端模式还是小端模式:
short int x;
char x0,x1;
x=0x1122;
x0=((char*)&x)[0];
x1=((char*)&x)[1];
若x0=0x11,则是大端; 若x0=0x22,则是小端……
参考
http://blog.csdn.net/blog_lee/article/details/38926379