KeN天下
KeN,做自己!
 
KenLife @ 2006-05-19 10:11

嵌入式c/c++编译器
交叉编译能力:能够在pc/unix平台上生成其他cpu平台目标代码
连接/定址器:   因为无法提供dos/windows的动态定位执行能力。嵌入式一般需要目标代码静态定位到具体地址,定址器完成这一工作。
启动代码:       初始化处理器和c语言堆栈区等环境的汇编码。
EC++:             针对嵌入式的一些实时要求等特点,对标准C++语言规范的修改扩充。


嵌入式C/C++开发环境
提供目标调试(remote/rom monitor)能力.
另外还有其他一些地方需要注意,如I/O库,大小尾段等。
主流嵌入式编译器:GNU 、CADUL 、CodeWarrior、GreenHill、Diab/SDS、IAR、BC/VC+Toolkit….等


仿真器与调试器的功能
内存查看
寄存器浏览
单步/断点设置
跟踪
程序下载执行
Flash烧写
操作系统任务级状态查看




 
KenLife @ 2006-05-19 10:05

元器件选型-〉原理图编制-〉印制板-〉样板试制-〉硬件功能测试-〉 BSP调试-〉
 RTOS移植-〉协议栈移植-〉应用程序调试- 〉 系统联调 -〉样机交付

系统实现
芯片选型-〉关键电路试验-〉原理图编制-〉原理图评审-〉印制板-〉
样板试制-〉硬件功能测试-〉硬件稳定性测试-〉 BSP调试-〉 
RTOS移植-〉协议栈移植-〉软件代码编制准备-〉软件代码编制-〉
软件单元代码走读-〉 代码单元测试-〉单元代码修改-〉单元代码回归测试-〉
系统联调 -〉系统集成测试-〉样机交付-〉文档交付


嵌入式开发需要注意的
1.嵌入式产品对实时性要求高
2.嵌入式产品对代码尺寸有要求
3.嵌入式开发不能使用DOS中断或Windows-API资源。
4.嵌入式产品的软件开发环境与调试环境与应用系统开发不同,一般要使用交叉编译器和仿真调试器



 
KenLife @ 2006-05-19 10:00

 实时操作系统(RTOS):指系统能够及时响应随机发生的外部事件,并在严格的时间范围内完成对该事件的处理。
                            分为两类:实时控制系统和实时信息处理系统

实时操作系统与协议栈
1.很多实时操作系统厂家均提供基于相应RTOS的协议栈产品
2.各类协议栈如TCP/IP、VOIP、 NO.7、 MAP、语音识别、手写输入、红外传输 …能简化产品开发难度
3.各类协议栈能缩短产品开发周期,提升产品质量




 
KenLife @ 2006-05-19 09:46

从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:
- 第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令;
- 第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。

当ARM微处理器执行32位的ARM指令集时,工作在ARM状态;
当ARM微处理器执行16位的Thumb指令集时,工作在Thumb状态。
在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,
并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。

状态切换方法:

ARM指令集和Thumb指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,
但ARM微处理器在开始执行代码时,应该处于ARM状态。
进入Thumb状态:当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,
使微处理器从ARM状态切换到Thumb状态。
此外,当处理器处于Thumb状态时发生异常(如IRQ、FIQ、Undef、Abort、SWI等),则异常处理返回时,自动切换到Thumb状态。

进入ARM状态:当操作数寄存器的状态位为0时,执行BX指令时可以使微处理器从Thumb状态切换到ARM状态。
此外,在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,
也可以使处理器切换到ARM状态。

ARM体系结构的存储器格式:
ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(232字节)。

ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式

处理器模式:
ARM微处理器支持7种运行模式,分别为:
─ 用户模式(usr):       ARM处理器正常的程序执行状态
─ 快速中断模式(fiq):   用于高速数据传输或通道处理
─ 外部中断模式(irq):   用于通用的中断处理
─ 管理模式(svc):       操作系统使用的保护模式
─ 数据访问终止模式(abt): 当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。
─ 系统模式(sys):       运行具有特权的操作系统任务。
─ 未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。

ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。

大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。

除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(Privileged Modes);
其中除去用户模式和系统模式以外的5种又称为异常模式(Exception Modes),
常用于处理中断或异常,以及需要访问受保护的系统资源等情况。

 





 
KenLife @ 2006-05-18 21:24

5、6、7、8
四天狂攻嵌入式系统
ARM



 
KenLife @ 2006-05-18 21:12

"What are these two macros doing and use for?"
Maybe it is a stupid question, but I think I still do not know that.
haha, is it necessary for understand it?
I do not know,but I want to !



 
KenLife @ 2006-05-18 15:34

1. Template
template <Class T>
T power(T base,int exponent)
{
    T result=base;
   if(exponent==0)  return (T)1;
   if(exponent<0)  return (T)0;
   while (--exponent)  result *=base;
   return result;
}
返回值类型必须确保类型为T
2. Template Class
每一个成员函数前都要加上 template <class T>



 
KenLife @ 2006-05-18 15:02

Stack、Heap、Global、local static
1.Stack(栈)
    void Func()
      {
        CFoo foo;
        ...
      }
2.Heap(堆)
    new
3. Global also is a static.

4. local static
    void Func()
      {
        static  CFoo foo;
        ...
      }
只会有一个实例产生,而且在固定的内存(既不是stack也不是heap)。
它的构造函数在控制权第一次移转到其声明处时被调用



 
日历
网志分类
· 所有网志
· CLife
· 嵌入式开发
最新的评论
站内搜索
友情链接
· 我的歪酷 非非共享界

订阅 RSS

0004296

歪酷博客