uboot研读笔记
文章平均质量分 96
Mculover666
CSDN博客专家,微信公众号mculover666,凭借与生俱来的热爱专注于嵌入式领域,在自己折腾的同时,以文字的方式分享所玩、所思、所想、所悟,作为一个技术人,我们一起前进~
展开
-
uboot研读笔记 | 14 - uboot启动流程分析(2016.03版本)
一、第一行代码要分析uboot启动流程,先得找到uboot启动的第一行代码,编译uboot,查看u-boot.map文件,找到Linker script and memory map这一节:.text 0x0000000087800000 0x3e734 *(.__image_copy_start) .__image_copy_start 0x0000000087800000 0x0 arch/arm/lib/built-in.原创 2022-03-11 21:33:11 · 1616 阅读 · 0 评论 -
uboot研读笔记 | 13 - uboot编译构建Makefile分析研读(2016.03版本)
一、uboot的编译首先来回顾一下uboot如何编译。(1)设置临时环境变量export ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-(2)指定板级配置,生成.config文件make xxx_defconfig(3)编译make -j8(4)清除构建make distclean接下来,我们深入研读uboot根目录下的顶层Makefile文件,来分析uboot的编译构建流程。二、Makefile1. uboot版本信息VERSION原创 2022-03-06 19:09:02 · 1446 阅读 · 0 评论 -
uboot研读笔记 | 12 - uboot目录结构分析(2016.03版本)
一、uboot目录分析uboot未编译的时候,长这样:编译完成之后,长这样:1. api原创 2022-03-05 21:14:58 · 1573 阅读 · 1 评论 -
uboot使用命令整理(2016.03)
一、uboot启动信息系统启动时,按下任意键进入uboot命令行:uboot版本和编译时间:2016.03CPU型号和主频CPU类型:工业级复位原因:POR板子名称:MX6ULL 14x14 EVKI2C:就绪DRAM大小:512MBMMC:有两个控制器,就绪LCD型号:ATK 7寸LCD,1024*600分辨率,24位色彩深度(RGB888)标准输入:串口标准输出:串口标准错误:串口切换到eMMC的第0个分区上,并使用eMMC网口:使用FEC1用户提示:正常启动,ubo原创 2022-03-04 17:05:48 · 6348 阅读 · 2 评论 -
i.MX6ULL系统移植 | 移植NXP官方uboot 2016.03版本(2022.04.06更新)
一、NXP官方uboot1. 下载https://github.com/Freescale/u-boot-fslc这里为了保持版本统一,使用正点原子资料包中提供的原厂uboot:uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2(版本是2016.03)。2. 编译设置临时环境变量:export ARCH=armexport CROSS_COMPILE=arm-linux-gnueabihf-清理构建:make distclean查看uboot/conf原创 2021-11-05 21:36:37 · 4517 阅读 · 0 评论 -
uboot研读笔记 | 11 - 移植uboot 2012.04到JZ2440(移植完成,制作uboot补丁)
1. 为什么需要补丁补丁文件就是通过对比当前文件和源码文件之后,得到修改内容的文件。有了补丁文件,就可以在uboot2012.04的源码之上,直接打补丁,就会变为移植好适配JZ2440的uboot,非常方便,在分享或者发布的时候,因为Uboot源码是统一的,所以只需要分享或者发布这个补丁文件即可。2. 如何制作补丁①清除编译产生文件make distclean② 对文件夹重命...原创 2020-03-01 11:50:14 · 1180 阅读 · 0 评论 -
uboot研读笔记 | 10 - 移植uboot 2012.04到JZ2440(烧写Linux内核、烧写yaffs2文件系统)
1. 烧写Linux内核在上一篇文章中设置了默认内核启动参数和命令,如图:启动时内核先会进行倒数计时,如果没有操作,就会执行图中的命令,从nand flash中的kernel 分区处读取内核到内存中的0x30000000处,也就是SDRAM起始地址,然后从0x30000000处启动内核。所以,我们只需要将JZ2440官方提供的内核文件复制到TFTP服务器目录,然后将该内核文件提前烧写到na...原创 2020-03-01 10:29:39 · 1408 阅读 · 0 评论 -
uboot研读笔记 | 09 - 移植uboot 2012.04到JZ2440(设置默认环境变量参数)
1. 定位环境变量问题目前移植的uboot支持SDRAM、Nor Flash、Nand Flash、DM9000网卡,但是还有一行警告没有处理:原创 2020-03-01 08:09:20 · 1349 阅读 · 0 评论 -
uboot研读笔记 | 08 - 移植uboot 2012.04到JZ2440(设置mtd分区表)
1. mtd分区规划及其作用uboot支持各种设备之后,接下来的工作就是烧写内核、烧写文件系统,所以需要对整块Nand Flash的空间作以规划,大致分为以下四个空间即可:bootloader空间内核参数空间内核空间文件系统空间但是目前我们仅知道uboot.bin被裁剪到了217KB,而不知道其它三个空间的信息,而且是第一次移植,对内核参数占用空间、内核空间的大小没有概念,所以我们...原创 2020-02-29 11:58:31 · 2727 阅读 · 0 评论 -
uboot研读笔记 | 07 - 移植uboot 2012.04到JZ2440(裁剪uboot大小)
1. 裁剪方法目前一步一步移植完成的uboot.bin文件有327KB,太大了,可以进行一定的裁剪,将用不到的代码不加入编译,减小uboot.bin文件的大小。裁剪方法非常简单:修改单板配置文件include/configs/smdk2440.h,去除不必要的宏定义。2. 裁剪过程去除USB支持去除RTC支持去除BOOTP支持去除DHCP、DATE、USB命令支持去除文件系...原创 2020-02-28 21:42:15 · 2317 阅读 · 0 评论 -
uboot研读笔记 | 06 - 移植uboot 2012.04到JZ2440(支持DM9000C网卡)
1. JZ2440开发板上的网卡JZ2440开发板板载DM9000C网卡,原理图如图:2. 添加uboot中已有的驱动文件到工程中2.1. 添加宏定义uboot自带的驱动文件夹中已经包含有DM9000的文件:drivers/net/dm9000x.cdrivers/net/dm9000x.h接下来查看此目录(net目录)下的makefile文件,将DM9000的这两个文件加入工...原创 2020-02-28 09:21:08 · 1391 阅读 · 0 评论 -
uboot研读笔记 | 05 - 移植uboot 2012.04到JZ2440(支持Nand Flash读写)
在支持Nand Flash操作之前,首先要对Nand Flash的读写方法有一定的了解,参考文章:S3C2440-裸机篇-10 | 使用S3C2440操作Nand Flash1. 去除nand flash屏蔽在之前初步移植uboot时,发现开启nand flash之后编译不通过,所以屏蔽了nand flash的使用,在单板配置文件include/configs/smdk2440.h中开启...原创 2020-02-27 19:01:37 · 1616 阅读 · 0 评论 -
VScode和SourceInsight,到底哪个看源码爽?
在做嵌入式Linux开发的时候,经常会阅读大型工程源码,比如uboot源代码,Linux Kernel源码等,所以,选择一个合适的工具来阅读源代码,变为了一个经久不衰的话题。阅读源码的时候,其实无非也就两个重要的功能:① 定义或者声明快速跳转② 快速搜索指定内容另外还有一些功能是和开发体验相关的,比如:① 工具的主题(亮色和暗色)② 工具是否方便修改编辑内容③ 工具是否还提供其...原创 2020-02-26 19:31:08 · 60121 阅读 · 48 评论 -
uboot研读笔记 | 04 - 移植uboot 2012.04到JZ2440(支持Nor Flash读写)
向jcedc信息库中添加JZ2440开发板板载Nor Flash的支持,使uboot支持该款Flash原创 2020-02-26 11:42:14 · 2587 阅读 · 0 评论 -
uboot研读笔记 | 03 - 初步移植uboot 2012.04到JZ2440(修改时钟,配置串口)
1.新建单板① 新建单板目录,复制已有相似的目录即可(在board/厂家型号之下)② 新建单板配置文件,复制相似即可(在include/configs/目录下)③添加单板配置文件修改根目录下boards.cfg文件,在其中按照规定的格式添加单板配置文件,格式如下:Target ARCH CPU Board name Vendor SoC Options//目标 CP...原创 2020-02-25 14:00:31 · 2067 阅读 · 1 评论 -
uboot研读笔记 | 02 - 详细探索uboot启动过程(2012.04版本,基于S3C2410处理器)
1. 启动流程分析方法uboot的文件太多了,要从文件着手学习是非常困难的,最好的办法是:选择一款已经默认支持的处理器,然后去研究针对该款处理器的启动过程,以及使用到了哪些问文件,重点掌握需要自己修改哪些文件即可。这里我选择和开发板S3C2440近似的一款已有处理器:S3C2410,然后研读针对该款处理器的源代码。2. start.S文件(stage1阶段-ASM)在编译产生的链接文件u...原创 2020-02-24 20:27:02 · 2932 阅读 · 0 评论 -
uboot研读笔记 | 01 - 下载uboot源码并使用VSCode远程查看源码、编译uboot(2012.04.01版本)
1. 硬件准备俗话说,纸上得来终觉浅,绝知此事要躬行。要想真正的搞懂uboot,不能只靠查看源码,要准备一块实际可以跑Linux的板子,并且一定要有别人移植好的uboot作为参考。这里我使用的是JZ2440开发板,处理器是三星的S3C2440,CPU是ARM920T,如图。因为这款处理器移植uboot的资料太太太丰富了,所以在学习阶段,我选择这款处理器。2. 下载uboot源码uboo...原创 2020-02-21 21:03:42 · 4356 阅读 · 0 评论 -
uboot研读笔记 | 00 - 嵌入式Linux系统中Bootloader的作用和基本运行原理
1. 嵌入式Linux系统开发架构一个嵌入式Linux的系统的架构如下图:软件程序开发中,从下往上每一次的作用依次为:Bootloader:将硬件初始化,并将内核引导起来;Linux Kernel:定制、裁剪之后的Linux内核;根文件系统:提供文件系统,更好的使用存储空间;设备驱动:完成设备操作,并向上层软件提供设备的调用接口;应用程序:Linux系统编程、网络编程、shell...原创 2020-02-21 21:03:31 · 3154 阅读 · 0 评论