CN108170480A - 一种基于u-boot引导μC/OS操作系统的启动方法 - Google Patents
一种基于u-boot引导μC/OS操作系统的启动方法 Download PDFInfo
- Publication number
- CN108170480A CN108170480A CN201711416113.XA CN201711416113A CN108170480A CN 108170480 A CN108170480 A CN 108170480A CN 201711416113 A CN201711416113 A CN 201711416113A CN 108170480 A CN108170480 A CN 108170480A
- Authority
- CN
- China
- Prior art keywords
- boot
- operating systems
- bin
- files
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于u‑boot引导μC/OS操作系统的启动方法,涉及μC/OS操作系统。首先在liunx环境下对u‑boot进行配置,并按不同需求修改u‑boot配置文件中的宏定义,得到特定开发板对应的u‑boot代码,将特定开发板对应的u‑boot源码编译成uboot.bin二进制文件,并将其烧写到特定开发板上;然后配置μC/OS操作系统的相关参数并编译成可执行ucos.bin镜像文件,运行uboot.bin二进制文件,通过tftp服务将编译的ucos.bin镜像文件下装到开发板上的存储位置;解析并执行环境变量的bootcmd命令,通过go指令跳转到内存地址,将pc指针指向μC/OS操作系统的第一条指令,完成u‑boot引导μC/OS操作系统的启动。本发明的u‑boot几乎支持所有处理器架构,cpu的启动代码在编译时选择当前cpu即可;操作方便,简单灵活。
Description
技术领域
本发明涉及μC/OS操作系统,具体是一种基于u-boot引导μC/OS操作系统的启动方法。
背景技术
μC/OS操作系统基于ROM运行,具有可裁剪、抢占式,能实时多任务内核以及高度的可移植性等特点,适合于微处理器和控制器,是一种被应用于很多商业系统的实时操作系统。
u-boot为开源代码,涵盖了绝大多数的处理器架构,能支持大量驱动;其目前要支持的目标操作系统是OpenBSD,NetBSD,FreeBSD,4.4BSD,Linux,SVR4,Esix,Solaris,Irix,SCO,Dell,NCR,VxWorks,LynxOS,pSOS,QNX,RTEMS,ARTOS,android等。
μC/OS官方提供的板级支持包多数运行在keil,iar等软件,在这些软件中启动代码均不相同;但是,所有的启动代码一部分依赖软件架构,另一方面依赖cpu的体系架构,当开发官网不支持的cpu时,需要开发cpu体系架构相关代码及软件相关的启动代码,并且多数代码都是汇编语言编写,开发有一定难度;
μC/OS官方提供的板级支持包提供的启动方式较少,一般只有一个固化的flash和基于片上的ROM启动两种,启动方式相对单一,当板上的某些与启动相关的元器件出现问题时,问题难于查找定位;
同时,μC/OS官方提供的板级支持包能提供的驱动程序也很少。
发明内容
本发明针对上述问题,提出一种基于u-boot引导μC/OS操作系统的启动方法;
具体步骤如下:
步骤一、在liunx环境下对u-boot进行配置,并按不同需求修改u-boot配置文件中的宏定义,得到特定开发板对应的u-boot代码;
配置文件格式为x-x-defconfig;包含cpu型号、cpu架构、启动方式、内存配置以及依赖的官方公板;在liunx环境下,通过make x-x-defconfig完成u-boot配置。
修改u-boot配置文件包括:裁剪、修改及添加特殊功能;
对开发板上不需要实现的功能,通过屏蔽config.h文件中对应的宏定义将u-boot中相关代码裁剪;
对开发板与官方公板有差异的器件,更改u-boot中对应器件的相关配置信息;
对开发板添加的某项新功能,并且官方公板不支持的功能,在u-boot中添加对应的源代码。
步骤二、将特定开发板对应的u-boot源码编译成uboot.bin二进制文件;
步骤三、将二进制文件烧写到特定开发板上;
步骤四、配置μC/OS操作系统的相关参数并编译成可执行ucos.bin镜像文件;
相关参数包括:选择运行的内存地址空间,堆栈空间等;
步骤五、运行uboot.bin二进制文件,通过tftp服务将编译的ucos.bin镜像文件下装到开发板上的存储位置;
通过命令“tftp内存特定地址ucos.bin”,把ucos.bin镜像文件下装到内存特定地址,通过命令“sf probe;sf update flash特定地址镜像大小”把ucos.bin镜像文件从内存特定地址写到flash特定地址。
步骤六、u-boot运行后,解析并执行环境变量的bootcmd命令,通过go指令跳转到内存地址,将pc指针指向μC/OS操作系统的第一条指令,完成u-boot引导μC/OS操作系统的启动。
bootcmd命令是指:“bootcmd=sf probe;sf read内存地址读取镜像大小;go内存地址”;执行命令的过程从内存中读取ucos.bin镜像文件到内存的特定地址。
本发明的优点在于:u-boot几乎支持所有处理器架构,cpu的启动代码在编译时选择当前cpu即可;操作方便,简单灵活。
附图说明
图1为本发明一种基于u-boot引导μC/OS操作系统的启动方法的流程图。
具体实施方式
下面结合附图对本发明的具体实施方法进行详细说明。
μC/OS操作系统官方提供的驱动较少,例如imx6板,官方仅提供系统运行的定时器驱动,其余外设均不支持。u-boot几乎支持所有处理器架构,cpu的启动代码不需要开发,只在编译时选择当前cpu即可;启动方式开发,编译目标板的配置即可,u-boot下通常包含多种启动方式,例如nandflash、norflash、spiflash、sd卡等;驱动开发,u-boot包含大量的驱动源码,通过修改配置文件中宏定义,即可选择编译所需驱动,例如在imx6板开发中,DDR驱动、串口驱动、EIM总线驱动、LED驱动、GPIO驱动均由u-boot提供。
一种基于u-boot引导μC/OS操作系统的启动方法;如图1所示,具体步骤如下:
步骤一、在liunx环境下对u-boot进行配置,并按不同需求修改u-boot配置文件中的宏定义,得到特定开发板对应的u-boot代码;
配置文件格式为x-x-defconfig;包含cpu型号、cpu架构、启动方式、内存配置以及依赖的官方公板;在liunx环境下,通过make x-x-defconfig命令完成u-boot配置。
本实施例采用外设有串口、网口、双口RAM、CPLD和norflash的imx6板;配置文件为mx6slevk-spinor-defconfig,包含了cpu型号为imx6sl,架构为arm,内存的配置为imximage.cfg文件,启动方式为spinorflash。
在linux的环境下输入make mx6slevk-spinor-defconfig完成uboot的配置。
修改u-boot配置文件包括:裁剪、修改及添加特殊功能;
对开发板上不需要实现的功能,例如lcd、usb功能,通过屏蔽config.h文件中对应的宏定义将u-boot中相关代码裁剪;
针对imx6板,删除USB驱动操作为:屏蔽命令CONFIG_CMD_USB;删除触摸屏驱动通过屏蔽CONFIG_SPLASH_SCREEN实现。
对开发板与官方公板有差异的器件,如phy芯片的型号;更改u-boot中对应器件的相关配置信息;
通过修改include/config/mx6slevk.h文件,修改phy芯片的配置为:将命令CONFIG_PHY_SMSC替换为CONFIG_PHY_MICREL。修改SPI配置为:将命令CONFIG_SPI_FLASH_STMICRO替换为CONFIG_SPI_FLASH_WINBOND。
对开发板添加的某项新功能,并且官方公板不支持的功能,如EIM总线上挂的CPLD,在u-boot中添加对应的源代码。
增加默认的环境变量的设置,包括MAC地址,服务器IP,本机IP等。修改“bootcmd=sf probe;sf read 0x200000 0x100000;go 0x200000”,添加环境变量“loaducos=sfprobe;sf erase 0x200000 0x100000;sf write 0x80800000 0x200000 0x100000”用来烧写ucos.bin文件。
在driver/gpio添加自定义文件eimConfig.c,里面包含EIM总线的配置和一些gpio引脚的初始化,修改同级目录下的makefile文件,添加obj-y+=eimConfig.o。
步骤二、将特定开发板对应的u-boot源码编译成uboot.bin二进制文件;
在u-boot下源码的根目录下通过make命令编译生成uboot.bin文件。
步骤三、将二进制文件烧写到特定开发板上;
将uboot.bin文件通过SD卡启动的方式用编程器烧写到norflash起始地址为0x400的位置。
步骤四、配置μC/OS操作系统的相关参数并编译成可执行ucos.bin镜像文件;
相关参数包括:选择运行的内存地址空间,堆栈空间等;
针对imx6板,配置ucos源码具体为:通过修改MCIMX6L_VRAM.icf分散加载文件,修改RAM_start_即修改物理内存的起始地址为0x80000000,修改RAM_end_即修改物理内存的结束地址为0x90000000;
然后通过iar开发环境添加应用程序代码,将ucos源码编译生成ucos.bin文件。
程序一共包含uboot.bin和ucos.bin两个镜像文件,uboot.bin文件固化在norflash地址为0x400,ucos.bin文件固化在norflash地址为0x200000。
步骤五、运行uboot.bin二进制文件,通过tftp服务将编译的ucos.bin镜像文件下装到开发板上的存储位置;
通过命令“tftp内存特定地址ucos.bin”,把ucos.bin镜像文件下装到内存特定地址,通过命令“sf probe;sf update flash特定地址镜像大小”把ucos.bin镜像文件从内存特定地址写到flash特定地址。
步骤六、u-boot运行后,解析并执行环境变量的bootcmd命令,通过go指令跳转到内存地址,将pc指针指向μC/OS操作系统的第一条指令,完成u-boot引导μC/OS操作系统的启动。
当imx6板上电时,uboot.bin被搬移到的内存地址为0x87800000,然后uboot开始执行,当uboot执行到解析环境变量时,uboot将ucos.bin搬移到内存地址为0x8a000000,然后使pc指针跳转到0x8a000000地址执行ucos.bin文件。
bootcmd命令是指:“bootcmd=sf probe;sf read内存地址读取镜像大小;go内存地址”;执行命令的过程从内存中读取ucos.bin镜像文件到内存的特定地址。
增加自定义驱动,在config.h中修改环境变量,实现把ucos.bin文件读到内存的特定地址,修改pc指针,使pc指针指向μC/OS的第一条指令。
本发明采用的imx6板添加了EIM总线驱动,修改了config.h文件中的phy芯片的参数,norflash的型号,启动参数修改为bootcmd=run norfboot、norfboot=sf probe;sfread${loadaddr}0x200000 0x100000;go${loadaddr}。
固化文件:uboot.bin通过编程器进行烧写,OS2.bin通过uboot tftp服务进行烧写。
imx6板上电重启,通过按任意键停在uboot下,然后通过执行run loaducos命令,即可完成将ucos.bin文件烧写到norflash中。然后imx6板重启,自动运行,即可实现uboot引导μC/OS操作系统启动。
Claims (5)
1.一种基于u-boot引导μC/OS操作系统的启动方法,其特征在于,具体步骤如下:
步骤一、在liunx环境下对u-boot进行配置,并按不同需求修改u-boot配置文件中的宏定义,得到特定开发板对应的u-boot代码;
修改u-boot配置文件包括:裁剪、修改及添加特殊功能;
对开发板上不需要实现的功能,通过屏蔽config.h文件中对应的宏定义将u-boot中相关代码裁剪;
对开发板与官方公板有差异的器件,更改u-boot中对应器件的相关配置信息;
对开发板添加的某项新功能,并且官方公板不支持的功能,在u-boot中添加对应的源代码;
步骤二、将特定开发板对应的u-boot源码编译成uboot.bin二进制文件;
步骤三、将二进制文件烧写到特定开发板上;
步骤四、配置μC/OS操作系统的相关参数并编译成可执行ucos.bin镜像文件;
步骤五、运行uboot.bin二进制文件,通过tftp服务将编译的ucos.bin镜像文件下装到开发板上的存储位置;
通过命令“tftp内存特定地址ucos.bin”,把ucos.bin镜像文件下装到内存特定地址,通过命令“sf probe;sf update flash特定地址镜像大小”把ucos.bin镜像文件从内存特定地址写到flash特定地址;
步骤六、u-boot运行后,解析并执行环境变量的bootcmd命令,通过go指令跳转到内存地址,将pc指针指向μC/OS操作系统的第一条指令,完成u-boot引导μC/OS操作系统的启动。
2.如权利要求1所述的一种基于u-boot引导μC/OS操作系统的启动方法,其特征在于,步骤一中,所述的配置文件格式为x-x-defconfig;包含cpu型号、cpu架构、启动方式、内存配置以及依赖的官方公板;在liunx环境下,通过make x-x-defconfig完成u-boot配置。
3.如权利要求1所述的一种基于u-boot引导μC/OS操作系统的启动方法,其特征在于,所述的步骤二中,在u-boot下源码的根目录下通过make命令编译生成uboot.bin文件。
4.如权利要求1所述的一种基于u-boot引导μC/OS操作系统的启动方法,其特征在于,步骤四中,所述的相关参数包括:选择运行的内存地址空间,堆栈空间。
5.如权利要求1所述的一种基于u-boot引导μC/OS操作系统的启动方法,其特征在于,步骤六中,所述的bootcmd命令是指:“bootcmd=sf probe;sf read内存地址读取镜像大小;go内存地址”;执行命令的过程从内存中读取ucos.bin镜像文件到内存的特定地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711416113.XA CN108170480A (zh) | 2017-12-25 | 2017-12-25 | 一种基于u-boot引导μC/OS操作系统的启动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711416113.XA CN108170480A (zh) | 2017-12-25 | 2017-12-25 | 一种基于u-boot引导μC/OS操作系统的启动方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108170480A true CN108170480A (zh) | 2018-06-15 |
Family
ID=62524039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711416113.XA Pending CN108170480A (zh) | 2017-12-25 | 2017-12-25 | 一种基于u-boot引导μC/OS操作系统的启动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108170480A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857468A (zh) * | 2019-01-04 | 2019-06-07 | 烽火通信科技股份有限公司 | 一种在单Linux系统镜像中支持多DTB的方法及系统 |
CN111176961A (zh) * | 2019-12-05 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 一种应用程序测试方法、装置及存储介质 |
CN111984329A (zh) * | 2019-08-22 | 2020-11-24 | 中国科学院国家空间科学中心 | 一种boot引导软件标准化生成、执行方法及系统 |
CN112732345A (zh) * | 2021-01-06 | 2021-04-30 | 北京科银京成技术有限公司 | 一种嵌入式系统的启动方法、装置、设备及存储介质 |
CN112988133A (zh) * | 2021-03-12 | 2021-06-18 | 麒麟软件有限公司 | 一种在引导阶段实现定制化功能及固定化函数地址的方法 |
CN114489821A (zh) * | 2022-01-25 | 2022-05-13 | 中电科申泰信息科技有限公司 | 一种基于U-Boot的多核处理器一级启动程序架构 |
CN114924803A (zh) * | 2022-06-16 | 2022-08-19 | Oppo广东移动通信有限公司 | 加载启动方法、芯片、电子装置和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101631394A (zh) * | 2009-08-21 | 2010-01-20 | 华东理工大学 | 无线传感器网络多接口协调器 |
CN104657104A (zh) * | 2015-01-22 | 2015-05-27 | 苏州工业职业技术学院 | 一种面向pc的嵌入式非特定语音沟通系统 |
US20150254080A1 (en) * | 2014-03-06 | 2015-09-10 | Ca, Inc. | Modifying disk images |
-
2017
- 2017-12-25 CN CN201711416113.XA patent/CN108170480A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101631394A (zh) * | 2009-08-21 | 2010-01-20 | 华东理工大学 | 无线传感器网络多接口协调器 |
US20150254080A1 (en) * | 2014-03-06 | 2015-09-10 | Ca, Inc. | Modifying disk images |
CN104657104A (zh) * | 2015-01-22 | 2015-05-27 | 苏州工业职业技术学院 | 一种面向pc的嵌入式非特定语音沟通系统 |
Non-Patent Citations (2)
Title |
---|
HONORXCL: "u-boot-2017.07移植到S5PV210单板", 《HTTPS://BLOG.CSDN.NET/QQ_15015097/ARTICLE/DETAILS/78385740》 * |
ZHEZHELIN: "uboot引导ucos原来就这么简单", 《HTTPS://WWW.CNBLOGS.COM/CUTE/ARCHIVE/2011/04/12/2014007.HTML》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857468A (zh) * | 2019-01-04 | 2019-06-07 | 烽火通信科技股份有限公司 | 一种在单Linux系统镜像中支持多DTB的方法及系统 |
CN109857468B (zh) * | 2019-01-04 | 2022-03-01 | 烽火通信科技股份有限公司 | 一种在单Linux系统镜像中支持多DTB的方法及系统 |
CN111984329A (zh) * | 2019-08-22 | 2020-11-24 | 中国科学院国家空间科学中心 | 一种boot引导软件标准化生成、执行方法及系统 |
CN111984329B (zh) * | 2019-08-22 | 2023-10-31 | 中国科学院国家空间科学中心 | 一种boot引导软件标准化生成、执行方法及系统 |
CN111176961A (zh) * | 2019-12-05 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 一种应用程序测试方法、装置及存储介质 |
CN112732345A (zh) * | 2021-01-06 | 2021-04-30 | 北京科银京成技术有限公司 | 一种嵌入式系统的启动方法、装置、设备及存储介质 |
CN112988133A (zh) * | 2021-03-12 | 2021-06-18 | 麒麟软件有限公司 | 一种在引导阶段实现定制化功能及固定化函数地址的方法 |
CN114489821A (zh) * | 2022-01-25 | 2022-05-13 | 中电科申泰信息科技有限公司 | 一种基于U-Boot的多核处理器一级启动程序架构 |
CN114489821B (zh) * | 2022-01-25 | 2024-06-07 | 中电科申泰信息科技有限公司 | 一种基于U-Boot的多核处理器一级启动方法 |
CN114924803A (zh) * | 2022-06-16 | 2022-08-19 | Oppo广东移动通信有限公司 | 加载启动方法、芯片、电子装置和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108170480A (zh) | 一种基于u-boot引导μC/OS操作系统的启动方法 | |
CN101763279B (zh) | 一种BootLoader架构设计方法 | |
Ratabouil | Android NDK: beginner's guide | |
CN101344854A (zh) | 通过SD卡对嵌入式Linux设备进行升级的方法 | |
CN104123153A (zh) | 用于使用usb升级固件的装置与方法 | |
US20070101115A1 (en) | Information processing device, bios processing method and program | |
CN104407878A (zh) | C6000数字信号处理器在线升级方法 | |
CN101599040A (zh) | 多接口仿真编程器 | |
WO2012071852A1 (zh) | 引导程序的升级方法和装置 | |
CN113326105B (zh) | 基于主机迁移的硬件设备配置方法、装置及设备 | |
CN103853557A (zh) | 一种用Uboot网络启动WinCE的方法 | |
CN104133706A (zh) | 固件修改方法及固件修改装置 | |
CN113868174B (zh) | 验证平台搭建方法、装置及存储介质 | |
CN104461638A (zh) | 一种基于Bootloader的XFP光模块升级方法 | |
WO2018014687A1 (zh) | 一种参数传递方法、装置及计算机存储介质 | |
CN100465894C (zh) | 一种Java Processor启动时类装载方法 | |
CN116954674A (zh) | eMMC固件升级方法、固件升级设备和存储装置 | |
CN104007979A (zh) | 一种Bootloader层驱动无线网络的方法 | |
Dice | Quick boot: a guide for embedded firmware developers | |
Ye | Embedded programming with Android: bringing up an Android system from scratch | |
Pandit et al. | Development of BSP for ARM9 Evaluation Board | |
Watson et al. | Bluespec Extensible RISC Implementation: BERI Software reference | |
Kumar et al. | Porting and BSP Customization of Linux on ARM Platform | |
Ruiz et al. | Embedded Systems | |
Araújo | Creating Tailored Os Images for Embedded Systems Using Yocto |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180615 |