uTenux的移植方法(cortex M)

发布者:BlissfulSunrise最新更新时间:2015-01-06 来源: 51hei关键字:uTenux  移植方法  cortexM 手机看文章 扫描二维码
随时随地手机看文章

uTenux现在已经之类几乎所有主流的cortex M的开发板,比如:ATMEL(爱特梅尔)、Cypress(赛普拉斯)、Freescale(飞思卡尔)、Infineon(英飞凌)、Nuvoton(新唐)、NXP(恩智浦)、SiliconLabs、Spansion、ST(意法半导体)、TI(德州仪器)。uTenux支持3个开发环境,IAR、Keil、uTstudio(悠龙开发套件)。正对个别开发板还进行支持其特有的开发环境,比如Cypress的PSoC Creator,ATMEL的Studio由于不能创建组(虚目录)暂时没有支持等...

介绍一下uTenux在cortex M系列上的移植方法,简单叙述一下在Coretex M系列之间怎么进行移植。因为Cortex M系类具有统一的NVIC管理,统一的内存划分。所以这样比较容易。

简单通俗了说移植uTenux就是:

1.根据具体开发板的中断数目修改启动文件。

2.根据具体开发板的Flash和SRAM的大小修改链接脚本。

3.实现UART的收发函数(bsp)。

4.修改配置文件文件。

下图红色框内是移植相关部分:

1.修改启动文件startup.S:通过芯片手册找到该芯片支持的中断数目(不大于255),然后修改启动文件中中断向量号多删少补到该芯片实际数目中断数目减1。都写成default_handler,因为uTenux支持动态修改定义向量表(M0除外,M0芯片假如用到了外设中断,需要手动修改相应default_handler为中断函数)。

2.修改链接脚本uTenux-flash:IAR链接脚本后缀名为icf、Keil链接脚本后缀名为sct、uTStudio链接脚本的后缀名为ld。通过查阅芯片手册得到芯片的Flash和SRAM的大小。通过修改链接脚本来配置uTenux各个节的大小,Flash配置为实际的大小,SRAM分配给各个节,注意不要超过SARM的实际大小就好。一般向量表配置大小为向量个数*4转成16进制;BSSDATA段一般分配7K左右(要是配置的系统对象多的话,需将其调大点);用户区一般分配4K;栈区分配0K,这个并不是说不使用栈空间,而是因为cortexM的栈时向下增长的,这样的话就会占用的用户区的一部分空间,幸好这个栈就是刚刚启动的时候使用,当uTenux内核起来以后这部分空间就没有用了,覆盖了也没有事;系统区是uTenux运行时使用的空间比如任务栈空间,一般是将SRAM剩余的所有空间都分到这里。这个分配方法仅供参考,具体可以根据实际情况作调整,系统区分配的最大并不代表系统需要占很大的空间,只是为了写应用程序好扩展而预留的。

3.实现bsp函数,其实就是UART和看门狗,这些函数在tm_bsp.c中。这些其实不是uTenux运行时必要的,实现它完全是为了打印一些提示信息,在实际应用中,完全可以再配置文件中将TK_USE_MESSAGE选项关掉,不让其输出。在这个文件中如果该芯片没有FPU完全可以将相关的代码移除掉,也可以通过关掉配置文件中的使用FPU开关宏将其关掉。主要有初始化flash(很多芯片无需设置);初始化时钟(uTenux默认跑在最高频);初始化看门狗(也就是将其关闭);初始化UART;然后将UART的收发函数体也实现了。具体怎么设置可以通过参考芯片生产商提供的官方例程中扒过来。这里用到了外设库,所以这个也需要添加工程中。

4.修改配置文件tk_config_depend.h。这个文件使用来配置uTenux的,比如systick中断频率,系统对象的数目,是否使用FPU,是否开启debug,和hook选项,是否打印信息等。在这里不用管那么多,只需要修改几个地方就行,首先还是分配Flash和SRAM空间,一定要和链接脚本的配置相同哦,至于这里还需要配置一次,大概是为了uTenux在各个芯片上移植的方便性,和以后uTenux继续划分存储空间的灵活性。TK_ROM_VECTOR_NUMBER和TK_RAM_VECTOR_NUMBER配置成该芯片实际的中断向量的数目。其次修改时钟KNL_CFG_TIMER_CLOCK为刚才bsp中所配置的频率,单位为MHz。最后是锦上添花的操作,将KNL_CFG_BOOT_MESSAGE提示信息修改为所移植的开发板的名称。

至此,修改代码的部分大体上就完成了。

需要注意的是如果移植的是如果移植的芯片如果是M0的话,会报BSSDATA段空间不足的错误,此时建议将系统对象配置的少一点。毕竟M0的空间比较少。

 
以上修改都是针对代码的,以下是针对工程的。

因为代码改完了,如果对开发环境不熟悉的话编译还是会有很多错误的。因为芯片变了可能使用的ARM指令集不一样,使用的外设库不一样,编译头文件搜索路径可能没有修改正确,条件编译宏可能没有设正确。这些都是需要修改的。IAR和Keil相似,uTStudio使用的是GCC工具链配置需要配的地方比较多。如果有必要择日再续一贴。

关键字:uTenux  移植方法  cortexM 引用地址:uTenux的移植方法(cortex M)

上一篇:CortexM之SysTick
下一篇:浅谈SPI总线

推荐阅读最新更新时间:2024-03-16 13:50

CortexM3,CortexM4存储器映像
Cortex-M3存储器映射 CM3 只有一个单一固定的存储器映射。这一点极大地方便了软件在各种CM3 单片机间的移植。举个简单的例子,各款CM3 单片机的NVIC 和MPU 都在相同的位置布设寄存器,使得它们变得通用。尽管如此,CM3 定出的条条框框是粗线条的,它依然允许芯片制造商 灵活地分配存储器空间,以制造出各具特色的单片机产品 CM3 的地址空间是4GB, 程序可以在代码区,内部SRAM 区以及外部RAM 区中执行。但是因为指令总线与数据总线是分开的,最理想的是把程序放到代码区,从而使取指和数据访问各自使用自己的总线,并行不悖。 这是LPC18xx Memory mapping 上图你可以看到,local SRAM
[单片机]
ARM CortexM0的油田采输物联网监控系统设计
引言 我国石油资源分布广,开采环境比较恶劣,采油输油覆盖面广且大多在野外。随着开采规模和区域的逐年扩大,为了提高石油生产效率和管理水平,将油田生产管理方式由事后现场被动管理转变为事先远程主动管理,保障油田的安全生产,提高处理油田突发事件的应急能力。这就要求实现生产数据自动采集、远程监控、生产预警,以及“无人值守、集中监控、定期巡检、自动操作”。 物联网技术的快速发展,为油田生产提供了新的思路和方法,在油田数据采集 、远程监控以及地面全面信息化等领域有非常广阔的应用前景。物联网控制系统不仅可以实现跨地域实时协同工作,紧密连接生产的各个环节,而且还可以实现油田业务与技术的整合,为后期的大数据云服务提供数据源基础。 1 系统
[单片机]
ARM <font color='red'>CortexM</font>0的油田采输物联网监控系统设计
PPCBoot在MPC8250上的移植方法
摘要:The Bootloader(引导加载程序)是嵌入式系统CPU加电后即开始运行的第一段代码,它把Linux内核与硬件平台衔接在一起,对于嵌入式系统的后续软件开发十分重要。PPCBoot是功能十分强大的Bootloader。深入研究了PPCBOOt的工作机理,详细分析了PPCBoot在基于MPC8250型处理器的嵌入式系统板上的移植方法、过程与移植要点。 关键词:Bootloader;PPCBoot;MPC8250;嵌入式系统 1 引言 Boodoader(引导加载程序)是CPU复位后和进入操作系统之前执行的一段代码,主要用于完成由硬件启动到操作系统启动的过渡,为操作系统提供基本的运行环境,如初始化CPU、堆栈、存储器系统
[嵌入式]
基于tiny4412的Linux内核移植 ---- 調試方法
平臺 Linux-4.4.4 uboot使用的是友善自帶的(爲了支持uImage和設備樹做了稍許修改) 概述 這篇博客主要用於匯總一下調試方法。 正文 1. dnw下載 目前我將uboot燒寫到SD卡中,然後使用dnw將kernel、根文件系統以及設備樹鏡像下載到內存中,爲了提高效率,可以使用下面的方法: 在uboot中添加環境變量: setenv dnw_up 'dnw 0x40600000; dnw 0x41000000; dnw 0x42000000; bootm 0x40600000 0x41000000 0x42000000' 進入uboot終端後,執行如下命令: run d
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved