Hello China操作系统STM32移植指南(一)

Hello China操作系统移植指南

首先说明一下,为了适应更多的文化背景,对Hello China操作系统的名字做了修改,修改为“Hello X”,或者连接在一起,写为“HelloX“。其中X是不固定的,可以根据具体应用的国家,甚至城市,进行定制化。比如在中国,我仍然会叫做”Hello China“,但是如果有人在美国使用了,则可以叫做”Hello USA“,在香港使用了,可以叫做”Hello Hongkong“,等等。但这些都是HelloX的分支,必须明确说明。这样做,主要目的是为了Hello China操作系统的全球化推广,后续将作为开源项目托管到github上,届时任何国家和地区的人都可以参与开发。

经过一段时间的尝试,现在已经成功把Hello China V1.76版的内核代码,移植到STM32芯片上。本文就对这个移植过程进行详细说明。在正式介绍移植步骤之前,先说明一下移植原理。

STM32移植原理

STM32芯片是ST公司开发的基于Cortex-M3 CPU(ARM系列)的SoC,在各行各业中得到了广泛的应用。往STM32上移植,本质上就是向Cortex-M3 CPU上的移植,移植后的内核,可以很容易的再移植到其它基于Cortex-M3 CPU的芯片上。关于STM32更多的背景及特性等,这里就不多说了。为了更好的理解下面的内容,建议读者先了解一下Cortex-M3 CPU的一些基础机制,这样阅读起来更加容易。

如果您一直在x86系列CPU上做开发,那么当接触到ARM系列CPU的时候,您会发现非常容易。ARM CPU非常简洁,逻辑比x86简单得多。根据我个人的经验,x86CPU的保护模式编程,比实模式编程要简单,而ARM CPU的编程,则比x86的保护模式更简单。虽然模型简单了,但由于指令系统不同,对中断/异常的处理机制也不一样,导致移植过程并不是很容易。主要集中在下列几个方面:

中断机制的移植

首先是中断处理机制的移植,这是任何操作系统向不同CPU上的移植,都需要涉及到的问题。x86 CPU采用中断描述表的方式,每个中断占用一个表项,表里面记录了处理中断的中断向量(函数)。一旦中断发生,CPU会调用对应中断号的中断向量。Cortex-M3CPU的中断机制与此基本类似,但是其中断向量表却简单得多,不像x86一样,内嵌了很多的控制信息。而且Cortex-M3的中断向量表的位置是固定的,就是在物理内存的起始处。Hello China在设计的时候,为了兼容多种CPU,其中断机制采用了“统一入口”的形式。即针对CPU的所有中断向量表,都填写一个唯一的入口-GeneralIntHandler,这个入口由Hello China操作系统实现。然后GeneralIntHandler再根据实际的中断向量号,调用具体的中断处理程序。这样的机制,可以适应大多数CPU的需求。因为有的CPU只有一个中断向量表,不像x86那样,每个中断都有向量表对应。因此在把中断处理机制移植到Cortex-M3的时候,必须要把每个中断向量跟GeneralIntHandler链接起来。下面是Cortex-M3的典型中断向量表结构:

__Vectors

DCD     __initial_sp               ; Top of Stack

                DCD     Reset_Handler              ; Reset Han

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值