打印
[应用方案]

deCORE OS在NUC951的移植

[复制链接]
299|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
deCORE OS移植到新唐ARM926EJ-S开发板的具体步骤和实现方
法,从而使操作系统在该开发板上正确高效得运行,在此也要详细描述开发板的
结构和性能。移植过程是在 deCORE OS 标准完成,为证明移植结果的可靠性,本
章会给出移植结果显示任务切换的时间,也证实了 deCORE OS 的实时性高要求。

使用特权

评论回复
沙发
arduino999|  楼主 | 2021-4-20 10:44 | 只看该作者
NUC951 开发板的 MCU 为基于 ARM 公司 ARM926EJS 核心的 32 位低功耗
RISC 处理器,带 MMU,提供 8K-byte 的指令 Cache 和 8K-byte 的数据 Cache,内
置 10/100M 以太网控制器。

使用特权

评论回复
板凳
arduino999|  楼主 | 2021-4-20 10:44 | 只看该作者

使用特权

评论回复
地板
arduino999|  楼主 | 2021-4-20 10:47 | 只看该作者
具体参数如下:
CPU 处理器:高效低功耗的 32 位 ARM926EJS RISC 处理器;最高 200MHz;
8K-byte 指令 Cache 和 8K-byte 数据 Cache,带 MMU 控制器;支持大、小端模式;
基于 JTAG 的调试解决方案;
Boot Flash:华邦 8M bytes NOR Flash 带 16-bit 数据总线或者华邦 128M bytes
NAND Flash 带 16-bit 数据总线;
SDRAM:4 个 128M bytes 带 32-bit 数据总线的 SDRAM 芯片;
SPI Flash:一个 8M SPI Flash;
EBI 总线:8/16/32 位外部总线,支持 ROM/SRAM, flash memory, SDRAM 和
I/O;存取周期可编程;4 字深度写缓冲区;
以太网 MAC 控制器:完全支持 IEEE 802.3 标准;RJ45 接口,10/100M 自适
应;支持长短包模式;
UART:UART0 口为 9 针母头,UART1/2 口为九针 UART 公头;

使用特权

评论回复
5
arduino999|  楼主 | 2021-4-20 10:48 | 只看该作者
USB:两个高速 USB 2.0 接口,USB0 为为主/从可配置接口,USB1 口只能为
从口;
JTAG:一个 JTAG 口用于 ICE 连接;
PWM:四路 PWM 控制器;
GPIO:GPC、GPD、GPE、GPF、GPG 一共 37 个复用引脚
Memory Cark:一个 SD 卡插槽
电源接口:5V 直流电,带电源开关和指示灯
这个芯片是建立在一个非常好的 CPU 上:32 位 ARM926EJ-S RISC 处理器是
通过先进的 RISC 机器设计,ARM926EJ-S 内核提供 8k 字节指令缓存和 8k 字节数
据缓存,内核的存储管理单元是一个通用集成电路且低功耗的单元。设置一个
10/100 Mb 的以太网 MAC 控制器是为了减少整个系统的功耗。TFT 型液晶控制器
和 2D 图形引擎与各种集成芯片结合在一起,这微控制器适用于高端,高性能和低
成本相关产品以及通用的应用程序。NUC951ADN 的主要功能有如下:
ARM926EJ-S 芯片有 8K 指令缓存和 8K 数据缓存、以太网 MAC 控制器、外部总
线接口控制器、GDMA 控制器、定时器和看门狗定时器、可编程 I/O 端口、高级
中断控制器、USB 主控制器、USB 设备控制器、USI(SPI/MicroWire)控制器、I2C
控制器、可编程 PLL 系统时钟合成器、带有 IrDA 控制信号的 UART、2D 图形引
擎、LCD 控制器、NAND Flash 主控制器、2 通道 AC97/I2S 控制器、4 通道 PWM、
RTC。

使用特权

评论回复
6
arduino999|  楼主 | 2021-4-20 10:49 | 只看该作者
ARM926EJ-S 目标板依据选择跳线的不同有四种启动方式 [38] (详细见 NUC951
Evaluation Board User's Guide_Ver 1.1.pdf),开发过程中使用 norFlash 启动。启动代
码将 SDRAM 重新映射为 0X0。在没有 bootloader 源代码的情况下,不做应用程序
的固化工作,只是每次加载到 RAM 中运行。
操作系统任务的切换需要定时器的帮助,定时器的配置可依照目标板数据手
册进行。手册中关于进入中断应做的操作说明不详,查看了 NonOS LIB 中示例代
码并经过测试,中断处理程序的最后需向 AIC_EOSCR 寄存器中写入一个值,标
识中断服务程序结束,下次中断才能正常进入 [30] 。如需使用相应中断,由于手册
说明不详的缘故,若按揣测的方式进行工作又很耗时,可以参考使用开发板上厂
家提供的库函数,参考示例程序的流程。

使用特权

评论回复
7
arduino999|  楼主 | 2021-4-20 10:50 | 只看该作者
本帖最后由 arduino999 于 2021-4-20 10:52 编辑

内部结构

AA.png (92.42 KB )

AA.png

使用特权

评论回复
8
麻花油条| | 2021-4-20 10:56 | 只看该作者
坐等楼主更新完。。。

使用特权

评论回复
9
arduino999|  楼主 | 2021-4-20 10:56 | 只看该作者
ADS 是 ARM 公司的集成开发环境软件 [22] ,他的前身是 SDT,SDT 是 ARM
公司曾经的开发环境软件,目前 SDT 早已经不再升级。ADS 包括了四个模块分别
是:SIMULATOR;C 编译器;实时调试器;应用函数库。ADS 的编译器调试器较
SDT 都有了非常大的改观, ADS1.2 提供完整的 WINDOWS 界面开发环境。C 编
译器效率极高,支持 c 以及 c++,使工程师可以很方便的使用 C 语言进行开发。
提供软件模拟仿真功能,使没有Emulators的学习者也能够熟悉ARM的指令系统。
ADS1.2 提供强大的实时调试跟踪功能,片内运行情况尽在掌握。ADS1.2 需要硬件
支持才能发挥强大功能 [34] 。
ADS 由命令行开发工具,ARM 实时库,GUI 开发环境(Code Warrior 和 AXD),
适用程序和支持软件组成。有了这些部件,用户就可以为 ARM 系列的 RISC 处理
器编写和调试自己的开发应用程序了。

使用特权

评论回复
10
arduino999|  楼主 | 2021-4-20 10:57 | 只看该作者
ARMCC:armcc 是 ARM C 编译器。这个编译器通过了 Plum Hall C Validation
Suite,为 ANSI C 的一致性测试。armcc 用于将用 ANSI C 编写的程序编译成 32
位 ARM 指令代码。armcc 是我们最常用的编译器;
ARMCPP:armcpp 是 ARM C++编译器。它将 ISO C++或 EC++编译成 32 位
ARM 指令代码;
TCC:tcc 是 Thumb C 编译器,它通过了 Plum Hall C Validation Suite 为 ANSI
一致性的测试,tcc 将 ANSI C 源代码编译成 16 位的 Thumb 指令代码;
TCPP:tcpp 是 Thumb C++编译器。它将 ISO C++和 EC++源码编译成 16 位
Thumb 指令代码;
ARMASM:armasm 是 ARM 和 Thumb 的汇编起,它对用 ARM 汇编语言和
Thumb 汇编语言写的源代码进行汇编;
ARMLINK:armlink 是 ARM 连接器,该命令既可以将编译得到的一个或多个
目标文件和相关的一个或多个库文件进行连接,生成一个可执行文件,也可以将
多个目标文件部分连接成一个目标文件以供进一步的连接,ARM 连接器生成的是
ELF 格式的可执行映象文件;
ARMSD:armsd 是 ARM 和 Thumb 的符号调试器。它能够进行源码级的程序
调试。用户可以在用 C 或者汇编语言写的代码中进行单步调试,设置断点,产看
变量值和内存单元的内容。

使用特权

评论回复
11
arduino999|  楼主 | 2021-4-20 11:09 | 只看该作者

使用特权

评论回复
12
arduino999|  楼主 | 2021-4-20 11:12 | 只看该作者
虽然在汽车电子领域 deCORE OS 已经是比较成熟的标准,但是还是不够完善
且有不清晰的概念等待继续研究。deCORE OS 的重要组成部分是任务管理、事件
管理、报警器和资源管理等,任务管理是用来调度任务的执行、切换和中止等。
系统规定任务开始执行后不会有类似时间片轮转的调度过程且开始执行就一直执
行到任务结束,在任务结束后再开始下一个任务。用户可以自己决定操作系统执
行哪个任务和任务的数量,即操作系统在工作时任务的数量不变。使用报警器的
目的是定时执行某个命令。操作系统中的资源都很类似,当某个资源被任务占用
后,操作系统通过同步与互斥原则来保护该任务使用资源,当任务执行完成才释
放资源给其他任务使用。事件是指会发生的某个动作比如赋值等,也表示进程在
运行状态需要等待某个事件,使其能转换为等待状态。每个部分都有独特的功能,
为了降低操作系统功耗同时使系统性能提高,就要精简设计每个部分的模块和结
构。通常降低一个系统的功耗可以从很多层次考虑,前面的章节也介绍过从硬件
层、寄存器传输层、应用程序层和传输层等都能从各个角度降低功耗,但是越到
操作系统和应用程序层,越有更多方法优化系统,降低功耗越是效果显著,相反
越往底层研究,效果不佳且花销代价更多 [4] 。下图给出不同层次降低功耗的情况:

使用特权

评论回复
13
arduino999|  楼主 | 2021-4-20 11:16 | 只看该作者

使用特权

评论回复
14
drer| | 2021-5-11 19:21 | 只看该作者
这是谁家的电路板啊

使用特权

评论回复
15
gwsan| | 2021-5-11 19:21 | 只看该作者
介绍的非常详细

使用特权

评论回复
16
kxsi| | 2021-5-11 19:23 | 只看该作者
标准还不够完善吗

使用特权

评论回复
17
nawu| | 2021-5-11 19:24 | 只看该作者
移植过程复杂吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

200

帖子

0

粉丝