CN108170480A - 一种基于u-boot引导μC/OS操作系统的启动方法 - Google Patents

一种基于u-boot引导μC/OS操作系统的启动方法 Download PDF

Info

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
Application number
CN201711416113.XA
Other languages
English (en)
Inventor
杨巍
卢俊娥
段靖辉
张新
郭青
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING CONTROL TECHNOLOGY Co Ltd
Original Assignee
BEIJING CONTROL TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by BEIJING CONTROL TECHNOLOGY Co Ltd filed Critical BEIJING CONTROL TECHNOLOGY Co Ltd
Priority to CN201711416113.XA priority Critical patent/CN108170480A/zh
Publication of CN108170480A publication Critical patent/CN108170480A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading 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

一种基于u-boot引导μC/OS操作系统的启动方法
技术领域
本发明涉及μ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镜像文件到内存的特定地址。
CN201711416113.XA 2017-12-25 2017-12-25 一种基于u-boot引导μC/OS操作系统的启动方法 Pending CN108170480A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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