移植ucosII到STM32F103ZE(一)
1.
MDK即RealView MDK(Microcontroller Development kit),是 ARM 公司目前最新推出的针对各种嵌入式处理器的软件开发工具。RealView
RealView MDK的突出特性:
菜鸟的阿拉伯飞毯—— 启动代码生成向导,自动引导,一日千里
启动代码和系统硬件结合紧密,必须用汇编语言编写,因而成为许多工程师难以跨越多门槛。RealView MDK的µVision3工具可以帮您自动生成完善的启动代码,并提供图形化的窗口,随您轻松修改。无论对于初学者还是有经验的开发工程师,都能大大节省时间,提高开发效率。
高手的无剑胜有剑 —— 软件模拟器,完全脱离硬件的软件开发过程
RealView MDK的设备模拟器可以仿真整个目标硬件,包括快速指令集仿真、外部信号和I/O仿真、中断过程仿真、片内所有外围设备仿真等。开发工程师在无硬件的情况下即可开始软件开发和调试,使软硬件开发同步进行,大大缩短开发周期。而一般的ARM开发工具仅提供指令集模拟器,只能支持ARM内核模拟调试。
专家的哈雷望远镜 —— 性能分析器,看得更远、看得更细、看得更清
RealView MDK的性能分析器好比哈雷望远镜,让您看得更远和更准,它辅助您查看代码覆盖情况,程序运行时间,函数调用次数等高端控制功能,指导您轻松的进行代码优化,成为嵌入式开发高手。通常这些功能只有价值数千美元的昂贵的Trace工具才能提供。
业界最优秀的编译器——RealView 编译器,代码更小,性能更高。
2.
3.
4.
5.
1)
http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32f10x_stdperiph_lib.zip
2)
先去micrium网址注册账号
http://micrium.com/page/home
然后登陆并下载
http://micrium.com/newmicrium/uploads/file/appnotes/secure/Micrium-ST-uCOS-II-LCD-STM32.exe
二、
1.
STM32F103ZET6是STM32F103系列最高端配置芯片,cortex-M3内核的32位处理器(内部数据路径,寄存器,存储器都是32位),采用哈佛结构,72M主频,LQFP144封装,片上有512K的flash和64K的SRAM。
![](http://m.amcfsurvey.com/editerupload/fetch/20161101/321489_1_0.jpg)
STM32家族主要产品系列家谱
2.
Cortex-M3只是用32位的thumb2指令。在支持了16位和32位的thumb-2指令集支持,cortex-M3无需把状态在thumb和ARM之间来回的去换,尤其在使用大型条件嵌套以及执行复杂运算的时候,cortex-M3要比老一辈的ARM7执行效率要高很多。
![](http://m.amcfsurvey.com/editerupload/fetch/20161101/321489_1_1.jpg)
3.
Cortex-M3处理器拥有R0-R15的寄存器组,其中R13作为堆栈指针SP。SP有两个,但在同一时刻只能有一个可以看到。这也就是所谓的“banked”寄存器。
![](http://m.amcfsurvey.com/editerupload/fetch/20161101/321489_1_2.jpg)
R0-R12 都是32 位通用寄存器,用于数据操作。但是注意:绝大多数16 位Thumb 指令只能访问R0-R7,而32 位Thumb-2 指令可以访问所有寄存器。
Cortex-M3 拥有两个堆栈指针,然而它们是banked,因此任一时刻只能使用其中的一个。
主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程)
进程堆栈指针(PSP):由用户的应用程序代码使用。
堆栈指针的最低两位永远是0,这意味着堆栈总是4 字节对齐的。
寄存器及其功能:
xPSR
PRIMASK
FAULTMASK
BASEPRI
CONTROL
a、定义特权级别;b、选择当前使用哪个堆栈指针。
4.
Cortex-M3处理器制程两种处理器模式和两种特权操作。
两种模式分别是处理者模式(handler mode)和线程模式(thread mode),主要是用于区别普通应用程序的代码和异常服务例程的代码(包括中断服务例程的代码)。
两种特权分级是特权级和用户级,用于提供一种存储访问的保护机制,使得普通的用户程序代码不能意外地或者恶意地执行涉及到要害的操作。
![](http://m.amcfsurvey.com/editerupload/fetch/20161101/321489_1_3.jpg)
ucosii不区分特权级和用户级,程序始终工作在特权级,因此两个堆栈指针的切换是全自动的,就在出入异常服务例程时由硬件处理。
5.
CM3的存储系统与传统ARM架构的相比,有过脱胎换股般的改革:
第一,它的存储器映射是预定义的,并且还规定好了哪个位置使用哪条总线。
第二,CM3 的存储器系统支持所谓的“位带”(bit-band)操作。通过它,实现了对单一比特的原子操作。位带操作仅适用于一些特殊的存储器区域中。
http://blog.sina.com.cn/s/blog_abd39cc70101ci44.html
第三,CM3 的存储器系统支持非对齐访问和互斥访问。这两个特性是直到了ARMv7-M 时才出来的。
最后,CM3 的存储器系统支持both小端配置和大端配置。
CM3 只有一个单一固定的存储器映射。这一点极大地方便了软件在各种CM3 单片机间的移植。存储空间的一些位置用于调试组件等私有外设,这个地址段被称为“私有外设区”。私有外设区的组件包括:
1)
2)
3)
4)
5)
ROM表
CM3 的地址空间是4GB, 程序可以在代码区,内部SRAM 区以及外部RAM 区中执行。但是因为指令总线与数据总线是分开的,最理想的是把程序放到代码区,从而使取指和数据访问各自使用自己的总线,并行不悖。
![](http://m.amcfsurvey.com/editerupload/fetch/20161101/321489_1_4.jpg)
Cortex-M3 预定义的存储器映射
CM3在定义了存储器映射之外,还为存储器的访问规定了4种属性,分别是:
可否缓冲(Bufferable)
可否缓存(Cacheable)
可否执行(Executable)
可否共享(Sharable)
评论