嵌入式系统的移植

在大学时一直在玩单片机开发,但是都是裸机在跑,一直没有能够跑系统,当时可能觉得很难,或者觉得项目没有必要上系统。。。。。


操作系统与裸机的区别

裸机运行的程序代码,一般由一个main函数中的while死循环和各种中断服务程序组成,平时CPU执行while循环中的代码,出现其他事件时,跳转到中断服务程序进行处理,没有多任务、线程的概念。
而引入操作系统后,程序执行时可以把一个应用程序分割为多个任务,每个任务完成一部分工作,并且每个任务都可以写成死循环。操作系统根据任务的优先级,通过调度器是CPU分时执行各个任务,保证每个任务都能够得到运行。若调度方法优良,则可使个任务看起来是并行执行的,减少了CPU的空闲时间,提高了CPU的利用率。由操作系统的任务管理衍生出相应的CPU管理、内存管理,它们分别负责分配任务对CPU的占有权和管理任务所占有的内存空间。在linux操作系统中,还具有文件管理、I/O设备管理的功能。

stm32能运行什么操作系统,能运行linux系统吗?

首先操作系统有两种:一种是用MMU(Memory
Managenent Unit ,即存储管理单元)的,另一种是不用MMU的。
用MMU的是Windows、 MacOS、 Linux 、Android;
不用MMU的是FreeRTOS 、VxWorks 、 ucLinux、uc/OS.
其次CPU也有有两种 :带MMU的和不带MMU的。
带MMU的有 Cortex-A、ARM9 、ARM11系列。不带MMU的有 Cortex-M系列
而我们知道STM32是 Cortex-M3、Cortex-M4系列的…所以目前还不可能运行Linux操作系统,但是stm32可以运行uc/OS、ucLinux、FreeRTOS 、VxWorks等操作系统。其中uc/OS操作系统是开源代码,且小巧而严谨,具有很高的实时性,可以作为学习linux等高级操作系统的基础,实际项目中也经常使用uc/OS开发

ARM架构和x86架构的区别

ARM架构统治了32位的处理器 ,例如嵌入式,X86统治了64位处理器,例如pc

参考链接:http://m.elecfans.com/article/678193.html


在STM32开发板上移植UCOSII系统

程序主要分为四个部分:

一、基于系统开发的用户应用程序(就是把裸机跑的一个程序,把这个程序分成了多任务程序,让系统调度,外设的驱动程序不会发生改变)

、core文件夹,UCOSII的内核/系统代码,这个部分代码与处理器无关(linux系统还会有文件管理,IO设备管理、图形界面等)

、config文件夹,是系统和应用程序相关代码,指定包含的库等等

四、PART文件夹,是与处理器相关的代码,移植到不同的处理器,都是需要修改的

这四部分代码在keil5上编译执行之后,没有问题,下载到开发板上,效果实现,则UCOSII算移植成功!!!!


龙芯开发板移植龙芯系统

龙芯2k开发板应该是有自己的Boot的,下载好龙芯系统iso文件,复制到u盘里,将u盘插在开发板上,给开发板接上hdml,连接显示屏,给开发板接上串口,连接电脑。启动龙芯开发板,进入boot界面,可以选择从u盘启动,之后就到了安装系统的图像界面,安装方法和centor os安装一致。安装完成后重启,那么这个龙芯开发板就具有龙芯系统了。

通过串口将电脑和龙芯开发板连接起来,打开串口对龙芯开发板的控制,就可以利用串口对龙芯开发板进行输入指令,控制了

给龙芯系统编译新内核,可以先从龙芯开源社区官网下载龙芯内核源码,去掉自己不用的外设驱动,勾选自己要用的外设驱动,重新编译,将编译好的内核拷入u盘中,通过串口输入指令,指示龙芯开发板将u盘中的内核拷贝到龙芯的硬盘中。再输入应用新内核的指令和配置,重新以后,龙芯开发板就是在用刚刚编译的新内核了。

很多开发板,或者arm架构的其他嵌入式cpu(例如s3c6410开发板),linux系统的移植可能跟这个类似,