本帖最后由 djyos 于 2009-10-10 08:58 编辑
看本文件请参考《都江堰操作系统与嵌入式系统设计》第15章,该书在www.djyos.com可以下载。
移植工作是在Ti赠送的EKK8962评估套件上完成的,在此对Ti的支持表示感谢。该开发套件的介绍网址(些本文时有效,不敢包永远有效):
http://www.luminarymicro.com/products/lm3s8962_can_ethernet_evaluation_kit.html
原理图下载地址:
www.djyos.com/jpg/EK-LM3S8962_EvalBoard_SCH.pdf
lm3s8962是一款cortex-m3的mcu,得益于cortex-m3处理器的架构优势,lm3s8962移植过程相当简单,需要修改的地方只有:
1、 链接配置文件,在keil MDK中就是debug.scat和release.scat文件。
2、 跟工程相关的初始化文件appinit.c和配置文件config-prj.h。
3、 启动代码中系统时钟初始化部分,即initcpuc.c文件。
4、 与外设相关的代码,目前计有:按键驱动(key-hard.c)、串口驱动(uart.c)、流水灯程序(在main.c文件中)。严格来说,这些已经不属操作系统移植范畴,将在另文讲述。
以上也是移植到其他cortex-m3处理器的方法。
1. 链接配置文件
由于cortex-m3在设计内核时,已经粗线条式地划分好了存储器配置,flash的起始地址必定是0,片内ram的起始地址必定是0x20000000。因此,不同的cortex-m3芯片,如果没有扩展片外存储器的话,debug.scat和release.scat的修改是相当简单的,只需要把ram尺寸和flash尺寸修改一下就可以了。keil MDK使用的是realview编译环境,其说明中说在scat文件中可以用#define定义符号,如:
[pre]#define BASE_ADDRESS 0x8000
[/pre] 但我实际试了一下,keil并不支持,估计MDK带的不是realview的完整版本有关,因此修改scat文件时也稍微复杂一点。
debug.scat文件的内容如下,其中斜体粗体部分是需修改的,分号后表示注释。
ROM_LOAD 0 0x40000 ;0x40000为实际flash尺寸,lm3s8962有256K flash
{
text_sysload 0
{
initcpu.o (RESET, +FIRST)
initcpu.o (+RO)
* (+RO)
}
RW_vect 0x20000000
{
int.o (.vect_table_base)
}
rw_sysload +0
{
* (+RW)
}
zi_sysload +0
{
* (+ZI)
}
handle_msp 0x20010000 EMPTY -0x400 ;0x20010000是lm3s8962 的ram末地址+1。
{
}
}
release.scat的修改也类似,这里不再重复了。
需要移植djyos到其他cm3芯片时,只要不涉及到片外扩展内存,照章办理即可。
字数限制,待续…… |