历史上的今天
返回首页

历史上的今天

今天是:2025年02月25日(星期二)

正在发生

2020年02月25日 | ARM开发板系统移植-----u-boot的编译

2020-02-25 来源:eefocus

本文和另外两篇姊妹篇都是为了说明如何裁剪出适合在mini2440 开发板上运行的Linux系统,以记录自己的学习成果。其中本文先介绍了嵌入式系统的软件组成部分,然后介绍编译出适合在mini2440开发板上运行的uboot的方法步骤。


说明:笔者使用的开发平台---RetHat linux系统,开发板---Friendly mini2440


在开始讲述系统移植的具体方法之前,先大致了解一下嵌入式系统的软件组成:

  

从上面这个图可以看出,嵌入式系统的软件组成主要包括bootloader、内核以及根文件系统。当然还有bootloader传给内核的参数列表以及没画出来的应用软件。其中bootloader在开发板一上电就会被硬件自动载入内存并最先获得CPU的使用权。bootloader完成一些列的初始化工作,包括加载剩余的bootloader到内存中、初始化CPU(设置CPU各个功能模块到一个合适的状态,比如工作模式、关闭看门狗、设置向量表、设置堆栈等等)、初始化板载硬件资源如内存、串口、网卡、usb等等。当bootloader顺利完成以上工作以后,它就会将内核加载到内存中,并且传递启动的参数给内核,最后启动内核。


内核的工作就相对复杂得多了,不过基本上都是初始化硬件以及内核使用到的各种列表,并且启动相应的进程完成相应的工作,这里就不详细介绍。日后再撰文详细介绍内核启动过程都完成了哪些工作。不过这里需要了解的是内核在启动中会挂载一个根文件系统,作为后续系统各种文件系统的挂载点。


uboot的编译事实上很简单,大致可以分为两步:

1、配置uboot:此步骤是为了能够配置出适合在开发板使用的代码以便进行编译,进入uboot顶层目录使用如下命令:

make mini2440_config


2、编译uboot:此步骤编译出uboot的二进制可执行文件,使用如下命令:

make ARCH=arm CROSS_COMPILE=arm-linux-


完成上面两个步骤之后可以在顶层目录中找到可执行代码:u-boot.bin,这就是烧写到开发板的二进制映像。

推荐阅读

史海拾趣

中科银河芯(GXCAS)公司的发展小趣事
三极管在饱和状态下的集电极-发射极压降(Vce)会影响输出信号的低电平值。
e2v technologies公司的发展小趣事

为了进一步提升整体实力,e2v在发展过程中进行了多次收购与整合。这些收购不仅增强了公司的技术实力和市场竞争力,也为其带来了更多的客户资源。例如,e2v曾收购了一家专注于医疗成像技术的公司,这一举措使其在医疗成像领域取得了显著的进展。

FUJIKURA公司的发展小趣事

2016年,e2v被Teledyne Technologies公司收购,成为Teledyne e2v。这一合并不仅为e2v带来了更多的资源和支持,也为其开启了新的发展篇章。Teledyne e2v在继续保持其在图像传感器领域的领先地位的同时,也积极拓展新的市场和应用领域,为电子行业的发展贡献更多的力量。

Diconex公司的发展小趣事

在电子行业的激烈竞争中,Diconex公司凭借其卓越的技术创新能力脱颖而出。公司成立之初,便专注于研发高性能、低能耗的半导体芯片。通过不断的研发投入和团队努力,Diconex成功推出了一系列具有行业领先水平的产品,赢得了客户的广泛认可。随着技术的不断升级和市场需求的不断增长,Diconex逐渐在电子行业占据了一席之地。

Alcatel-Lucent公司的发展小趣事

人才是企业发展的核心动力。Diconex公司高度重视人才培养和引进工作。公司建立了完善的人才培养机制,为员工提供广阔的发展空间和良好的职业晋升通道。同时,公司还积极引进行业优秀人才,为公司的快速发展提供了有力的人才保障。这种人才战略的成功实施使得Diconex在电子行业中拥有了强大的技术团队和人才队伍。

Elec & Eltek公司的发展小趣事

随着市场需求的不断变化,Elec公司意识到单一产品已无法满足客户的多样化需求。于是,Elec公司开始寻求与同行业公司的合作。在一次行业交流会上,Elec公司的代表与Eltek公司的代表相识,并发现双方的产品具有很强的互补性。经过多次深入交流,Elec公司与Eltek公司决定开展合作,共同研发具有更高性能、更广泛应用的电子产品。这一合作不仅增强了双方的竞争力,也为客户提供了更多样化的选择。

问答坊 | AI 解惑

请教非门的作用??

请教一下:信号从光耦接收出来,到达两个四个并联的非门再与两个非门串联来驱动三极管,其中这些非门的作用是为了增强驱动能力的作用吗? [ 本帖最后由 qmchen 于 2009-3-18 10:16 编辑 ]…

查看全部问答>

IGBT 损坏后结果情况

IGBT损坏后,有哪些结果情况?比如IGBT开路,但开路后IGBT的续流二极管还继续有用吗?…

查看全部问答>

波特率一高 串口传输就出錯

用串口收发数据,只要提高波特率,传输数据就出错,尤其是接收方,不知道是什么原因。 代码是C写的,查询方式。 比如红外用2400bps是好的,发01,02,03。。。20共20个数,接收都对,收到01,02,03,04,05,06一直到20. 但是改成4800bps之 ...…

查看全部问答>

"已失去对设备的远程连接。请验证设备连接并重新启动调试 "????

PDA上从电脑上pull入一个数据表,然后PDA自己存入数据时出现 \"已失去对设备的远程连接。请验证设备连接并重新启动调试 \",程序会自动退出,没有出现其它异常报告。 PDA重启程序后,再往刚才的数据表里存储数据一切正常。每次都是刚从电脑上pull入 ...…

查看全部问答>

cpu风扇转速

如何设置cpu风扇的转速呢,我的生音太大…

查看全部问答>

将要进入嵌入软件开发 的人

各位大哥们,我还是一个大一的学生,现在听说嵌入开发还可以,所以就有一点想向这一方面发展,但是现在在我面前的一个问题就是 我不知道要学那些东西,我也是一个计算机班的学生,这是不是有很大的优点. 所以就想问一下大哥们的应该出什么方向入手好一 ...…

查看全部问答>

tShell重定向到pty后,一直被PEND(内详)

将shell定向到2个pty上,分别是    数据写--> pty1 -->shell读取    数据读…

查看全部问答>

LPC2103匹配中断进不了

#include<LPC21xx.h> #define uint8  unsigned char#define uint32 unsigned intvoid Timer0_ISR(void) __attribute__ ((interrupt));uint8 num; void DelayNs(uint32 dly){  uint32 i;  for(;dly>0;dly--)  &nbs ...…

查看全部问答>

请教小数的处理,和小数的输出!

我AD采样的范围是0 - 2.5 V , 采样肯定是小数, 其类型应该是 float 型吧? 假如其采样点储存在float型数组内, 经过一系列运算后 如何使其转换成十进制数据 输出? 是有固定程序么? 比如将其转换成BCD码! 还请高手指点!…

查看全部问答>