大家晚上好,今天继续给大家分享Uboot的文章。始终要相信一句话,每天让自己进步一点点,日积月累你也是大佬。
uboot 属于bootloader的一种,是用来引导启动内核的,它的最终目的就是,从flash中读出内核,放到内存中,启动内核
嵌入式软件工程师听说过 u-boot 和 bootloader,但很多工程师依然不知道他们到底是啥。
使用F1C200S TINA3.5 SPINAND 在windows下的PhoenixSuit V1.19烧写固件,现象是: 1,空的nand第一次似乎提示烧写成功,但启动失败。 2,第二次以及之后的烧写就会失败。 3,配置以及按照官方nor切换nand的指南进行修改配置了。 4,板子换了全新空白nand 上去,也是一样的现象。 5,以下是第一次和第二次两次烧录的日志输出。
启动速度是嵌入式产品一个重要的性能指标,更快的启动速度会让客户有更好的使用体验,在某
这次是写公众号以来最久一次没有更文了,主要是刚进新公司,要熟悉一下环境,而且由于开发项目催的紧,压力比较大,以至于下班时间比较晚;同时在交流群里面也比较少回答网友的问题,不过如果你私聊我,我还是会抽出时间来给你解答;现在终于适应了开发节奏,不会那么难了;同时在今天这篇文章里面申明一下,下次私聊我问问题的网友,不要称呼我大佬和大神哦(大佬和大神的称呼,自己的能力远远达不到),自己也是从啥都不懂,即使现在找到合理的岗位,每天也在努力学习(这里讲个笑话,这几天办理那个社保号的问题,一开始我不知道社保号就是电脑号,直到昨天问同事才知道。)学习是不会中断的,特别是干我们这一行的,正所谓活到老学到老,而且人一生不是来享受的,而是生来都要吃一点苦的,先苦后甜嘛。
最近在看一些uboot相关的内容,有一些疑惑,但是暂时我又没有硬件板子,我就准备用QEMU模拟调试。
ROM下载:百度网盘 恩山论坛来源:传送门 此固件还是用的play4fun刷机步骤 , 刷到nand,只适用于128M !!!对于已经刷了20140520测试版及后续版本的机子,可以直接执行步骤4,在web界面刷新固件即可!!! 1/准备:电脑端有线网卡设置手动ip:192.168.1.100,ttl连接pogo,进到uboot 2/载入新的uboot(已刷好新uboot此步骤可省略) 运行tftpd32服务器,ttl进uboot输入命令 setenv ipaddr 192.168.
本次测评板卡是创龙科技旗下的TL570x-EVM,它是一款基于TI Sitara系列AM5708ARM Cortex-A15+浮点DSPC66x处理器设计的异构多核SOC评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
然后将smdk2440下的smdk2410.c改为smdk2440.c,以及修改更改好的Makefile
在上一章使uboot支持网卡传输文件后,但是每次启机时,环境变量都要变为默认值,需要重新设置ip,MAC地址才行,由于没有配置mtdparts命令,启动内核也不成功
因为嵌入式往往需要把程序放到板子上去运行,而再树莓派上做rt-thread开发调试的时候,通常有三种办法。
上一节S3C2440移植uboot之新建单板_时钟_SDRAM_串口移植uboot初始化了时钟,配置了支持串口,这一节我们继续修改uboot支持NAND启动。
atf基本启动流程为:BL1 – BL2 – BL31 – BL32 – BL33(uboot),即在bl32启动完成后再启动uboot,uboot作为启动链中作为最后一级镜像,用于启动最终的os。Atf是arm为了增强系统安全性引入,只支持armv7和armv8架构的可信固件。而uboot是通用的嵌入式系统引导程序,其可以支持包含arm在内的多种处理器架构,如mips、riscv、powerpc以及x86等,且其历史比atf更加久远。因此默认情况下uboot并不需要与atf共同启动,而其自身就被设计为支持完整的多级启动链,该启动链被设计为最多可包含spl、tpl和uboot三个阶段。接下来我们通过一些典型启动流程,来看下这些阶段的一些组合关系吧。
之前做过一次uboot的升级,当时留下了一些记录,本文摘录其中比较有意思的两个问题。
我们买开发板的目的就是把电脑上编写编译好的程序烧写到板子上验证学习。因此开发板上一定有个烧写口,例如JTAG烧写口。但电脑上是不会有这个JTAG口的,因此需要一个USB烧写器将两者连接,例如Jlink、OP/EOP。Jlink本来用的人很多,但随着版权意识的提高以及Jlink公司对盗版的打击,Jlink现在用得越来越少了。EesyOpenJtag是OpenJtag的便宜版本,他和我们的开发板是绝配,他可以直接烧写Nand Flash和Nor Flash,操作简单,价格便宜。
上篇文章,我们介绍了如何使用NXP原厂的uboot进行编译和烧写,将uboot运行在自己的开发板上。NXP原厂的uboot,直接烧录到我的开发板中,LCD的驱动是不正常的,需要进行修改。本篇我们就来继续研究uboot,「使得uboot能匹配我们自己的开发板」。
这周又一段时间没怎么写文章了,这周上班接触的东西有点多,每天都在接受挑战。维护公司移动app界面,设计到的技术是css、html、javascript。然后把写好的app程序通过threadx和Linux两个系统的支持(Linux内核版本是在3.10版本的,在安霸和海思平台);第一次搭建编译环境(这里跟平时学的环境有比较大的出路,作者被骂了好几次,终于是成功了,呜呜。。。),然后实时在PC或者手机端采集实时视频监控。后期会不断学习和分享自己在工作当中的一些经验给大家,希望对大家有帮助。今天开始写Uboot的文章和Linux驱动的文章。之前Linux应用的文章全部在公众号后台有。以上学习过程中,作者是学习朱有鹏老师的嵌入式课程。
参考博文: http://blog.51cto.com/9291927/1791237
Trusted Firmware-A(TF-A)是用于 Arm A-Profile 体系结构(Armv8-A 和 Armv7-A)的安全世界软件的参考实现,其中包括 Exception Level 3(EL3)安全监视器。它为在 AArch32 或 AArch64 执行状态下的安全世界启动和运行时固件产品化提供了一个合适的起点。
主 机:VMWare–ubuntu16.04 开发板:S3C2440 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2012.04.01.tar.bz2
root@ubuntu:/home/hfl/hflsamb/uboot/u-boot-2010.09#vi boards.cfg
本篇介绍如何编译及下载uboot到ARM板子上。对于初学者有这么三个名词,分别是uboot、kernel和rootfs。这三个名词我刚开始接触是非常的困惑,现在随着使用增多稍微有一点点感觉。大家刚开始学不用太纠结这个问题,等实际操作一段时间就会理解了。uboot的主要作用是用来启动linux内核,因为CPU不能直接从块设备(如NAND/EMMC/SD卡)中执行代码,需要把块设备中的程序复制到内存中,而复制之前还需要进行很多初始化工作,如时钟、串口等;要想让CPU启动linux内核,只能通过另外的程序,进行必要的初始化工作,再把linux内核中代码复制到内存中,并执行这块内存中的代码,即可启动linux内核;一般情况下,我们把linux镜像储存在块设备中如SD卡、Nandflash等块设备中,首先执行uboot代码,在uboot中把块设备中的内核代码复制到某内存地址处,然后再执行这个地址,即可启动内核。
在第三期项目的视频中,官方提供了一整套新的工具链,bootloader, 内核和文件系统(arm-linux-gcc_4.3.2, uboot-2012.04.01, linux-3.4.2)其中uboot-2012.04.01来源于毕业班,其下载烧写功能远不如uboot-1.1.6,因此我更偏向于使用老版的Uboot。但是第三期的工具链却无法直接编译uboot-1.1.6, 现在将解决这一问题。
嵌入式linux设备要进行软件升级有很种多方式方法,总的来说可以分为本地升级和远程升级。本地升级包括升级工具升级,存储介质升级等,远程升级是指通过网络进行程序升级。这里介绍一种同时支持本地和远程升级的方法,以供参考。
最近在一直在做uboot的移植工作,uboot中有很多值得学习的东西,之前总结过uboot的启动流程,但uboot一个非常核心的功能没有仔细研究,就是uboot的relocation功能。
首先,uboot会去校验(CRC)存放环境变量的一段空间 ,若CRC有效则使用该空间里的环境变量,无效则用默认的环境变量. 而我们移植的uboot,由于一直没有使用save,所以没有读不出CRC校验,使用的默认环境变量,如下图所示:
uboot默认是支持执行应用程序的,就像引导内核一样,我们也可以自己写一个应用程序,让uboot启动时引导。
本篇的重点是讲解设备和驱动的启动流程,设备和驱动的流程是整个内核启动的核心,也是工作中最常面对的问题。出于知识点的系统性考虑,在进入主题之前我们先看下整个 Linux 在 ARM 中的启动流程如何。
进入 uboot 的命令行模式以后输入“help”或者“?”,然后按下回车即可查看当前 uboot 所支持的命令,如下图所示:
前一篇《第一款能运行Android11 的RK3399开发板tinkerboard2》已经对tinkerboard2的Android 11有个大致的介绍,这一期来聊聊tinkerboard2 Android11 SDK bootloader部分的编译与烧录验证。后续的文章会从多个方面详细介绍如何基于官方的SDK定制一套Android固件。
本系列教程以「i.MX6ULL」处理器的ARM开发板为实验基础,学习记录嵌入式Linux开发的各种知识与经验,主要内容包括嵌入式Linux移植,嵌入式Linux驱动开发,嵌入式Linux应用开发等。
一个IoT设备,官方不提供固件包,网上也搜不到相关的固件包,所以我从flash中直接读取。因为系统是VxWorks,能看到flash布局,所以能很容易把uboot/firmware从flash中分解出来。
OTA 是Over The Air 的简称,顾名思义就是通过无线网络从服务器上下载更新文件对本地系统或文件进行升级,便于客户为其用户及时更新系统和应用以提供更
最近在学习riscv64架构的一些知识,并且利用做一些项目的机会去了解更多的不同种类的的芯片的架构设计。学习riscv的好处在于其架构是开源的,也就是任何人只要有兴趣和时间都可以利用开源的代码在fpga设计出一款自己的CPU出来,我觉得这是一个深入芯片底层设计的很好的机会。从上层到底层,从知其然到知其所以然,这必将是一个循序渐进的过程,本文梳理了一下riscv上的环境搭建方法(ubuntu18.04),让系统在qemu上正常的运行起来。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
按照官网wiki,http://wiki.espressobin.net/tiki-index.php?page=Boot+ESPRESSObin+from+SATA+drive&highlight=
CPU用的是Armada-3720,内核是https://github.com/MarvellEmbeddedProcessors/linux-marvell 里面18.12版本,uboot使用的是https://github.com/MarvellEmbeddedProcessors/u-boot-marvell/tree/u-boot-2018.03-armada-18.12。两路网口,一路是RGMII模式(lan1),另外一路是SGMII模式(lan2)。最近发现有时系统起来后用PC去ping lan2会ping不通,phy可以正常识别,执行ifconfig down/up也可以看到正常的打印信息。
uboot下载地址:http://ftp.denx.de/pub/u-boot/ 1、目录分布 2、目录结构变化: u-boot-2010.03及以前版本 ├── api
前言: 本文用于解决win7以上系统使用dnw难装驱动问题,使用新驱动: zadig-2.3.exe,支持xp,win7/win8/win10系统,安装方便、高效,欢迎试用。
PetaLinux是Xilinx基于Yocto推出的Linux开发工具。Yocto是业界主流的Linux发行版的构建工具,它不仅可以从源代码编译Linux 内核,还可以编译Linux发行版必须的数以千计的的应用程序,功能非常强大。Yocto的出现,大幅度降低了构建嵌入式Linux发行版的难度。 万物总有两面性。虽然PetaLinux/Yocto可以一键编译出一个自定义的嵌入式Linux发行版,但是编译整个文件系统很耗费时间。完整的一次PetaLinux/Yocto编译,可能需要从网络下载上GB的文件,可能需要几个小时。即使只更改一行代码,也需要数分钟时间。PetaLinux/Yocto的编译流程,也和很多开发人员原来的基于make的工作方法不一样,它会分析文件系统里所有应用程序的配置文件,执行下载、配置、编译、打包等过程。 如果在调试单板时,仅仅改动一行代码,也需要执行这些操作,显得冗余,也影响开发效率。 为了适应开发人员的工作习惯,也为了提高速度,可以整合PetaLinux工程编译和OpenSource U-Boot/Linux编译。
通过wind把SD卡格式化为FAT32模式 sudo fdisk -l //查看分区信息
时间测量 在mx51平台的uboot里,使用get_timer可以获得比较精确的计时,get_timer的使用贯穿了uboot性能调整的整个过程。 性能优化方法 减小uboot镜像的大小,去掉不需要的驱动,不需要的命令,减少uboot的大小可以从两个方面获得好处,首先会节省驱动初始化时间,其次会使uboot镜像变小,从磁盘读取uboot镜像所需的时间也变小了。 优化generic 的memcpy memset函数,通用的C实现 代码简单,但是性能较差,对于大块内存的操作,比如镜像的memcpy和memmo
使用make smdk2440_config命令(命令便会调用include/configs/smdk2440.h和board/samsung/smdk2440里的文件来配置uboot) 同样的,在windows下把u-boot-2012.04.01.tar_2\u-boot-2012.04.01\board\samsung下的smdk2410拷贝成smdk2440,把u-boot-2012.04.01.tar_2\u-boot-2012.04.01\include\configs smdk2410.h复制为smdk2440.h。在source insight中添加2440相关的文件,去掉2410部分。
和 uboot 移植相比,给开发板移植 pmon 难吗?有什么区别呢。我们在移植 uboot 的时候,基本上是不 会在 uboot 的官网去下载纯净的 uboot 镜像的,而是用的半导体厂家提供的 bsp 包里面的 uboot。为什么要 这么做呢?并不是说 uboot 官网里面的 uboot 源码不能用,不能移植,而是 uboot 官网里面的 uboot 对相应的 CPU 的支持不是很好。你想哈,谁对 CPU 最熟悉呢?肯定是半导体厂家是不是,他们对自己的 CPU 肯定 是最熟悉的。所以他们提供的 bsp 里面的 uboot 是对他们的 CPU 支持最好的,驱动最全的。所以我们不会 在 uboot 官网去下载,然后在去移植。而且使用半导体厂家提供的 BSP 还有一个好处,就是移植非常简单。
我们深受windows、ubuntu、开发板之间互PING问题的困扰, 特别为这个问题录了视频(https://v.qq.com/x/page/h0505eg7z0m.html) 无奈还是有很多很多同学不看视频直接发问,或者说看了视频也解决不了问题,所以我再试图用几页文档解决这个问题。 这是ping问题解决方法最新文档,遇到问题首先看这里,也希望这是最后一个文档。
上篇文章介绍了根文件系统的制作与NFS网络挂载,这篇文章介绍内核如何从本地挂载根文件系统,完成系统启动。本地挂载一般用在产品发布的时候,本地挂载的操作也分为两种。
领取专属 10元无门槛券
手把手带您无忧上云