
u-boot相关
文章平均质量分 84
mcdx
这个作者很懒,什么都没留下…
展开
-
linux系统移植-s5pv210
内核的下载还是和u-boot移植的步骤差不多,首先是要选择一个版本,然后下载镜像,确保能够正确编译成功。对于版本的选择,因为我是学习用,所以选择较新的版本,我看了一下目前版本比较新且是稳定版的是5.7.8版本,所以决定采用这个版本的内核进行移植。下载链接如下:https://www.kernel.org/生成配置文件和u-boot的一样,也是首先生成.config配置文件,实际上u-boot那一套都是从内核这里移植过去的。解压内核后进入内核根目录运行如下命令:make ARCH=arm CROSS原创 2020-07-21 21:45:19 · 1546 阅读 · 1 评论 -
u-boot2020.04移植(小记:重定位前后保留的堆内存是如何被malloc的)
文章目录重定位前的堆内存池那当我们使用malloc时,它是如何给我们分配内存的呢?以malloc为例再来看下重定位后结论重定位前的堆内存池首先看一下重定位前,在重定位前也就是第一阶段,u-boot会保留一片内存用于堆,也就是gd->malloc_base这篇区域,其大小为0x400,具体见下面的内存图:图1那当我们使用malloc时,它是如何给我们分配内存的呢?在源码中搜索malloc可以在include/malloc.h中找到下面的宏定义:/*你可能发现很多重复的宏定义,但是经过分析,原创 2020-07-19 15:17:33 · 838 阅读 · 0 评论 -
u-boot2020.04移植(支持网络)
前面基于goni这块板子移植的u-boot并不支持网络,但是我的开发板上面是支持网络的,所以这里把网络支持添加上。先看一下硬件是怎样接的:DM9000属于类内存总线的设备,被映射到s5pv210的SROM区域,从图上可以知道它接在SROM的bank1,CMD接在ADDR2。从前面的过程分析我们知道,网络相关的初始化在board_init_r阶段,有两个相关的函数,下面来看一下:/*common/board_r.c*//*这个函数主要的作用是设置mac地址,但u-boot提供了可以随机生成mac地原创 2020-07-17 21:38:45 · 731 阅读 · 0 评论 -
u-boot2020.04移植(eMMC/SD调试)
文章目录前奏流程驱动匹配分析需要的属性调试结果前奏随着u-boot版本的变迁,u-boot的功能也越来越多越来越强大,在较新的u-boot中已经支持很多不同类型的文件系统,告别了以前需要移植者自己手动规划eMMC/SD等镜像存储介质的分区信息(并非真正的磁盘分区,只是一个标号而已),可直接使用相关的命令就可以读取出各种文件系统类型的存储介质中的文件,使烧录、更新、启动等操作变得更加方便,所以在u-boot中支持eMMC/SD卡是很有必要的。流程在我现在用的u-boot版本2020.04中mmc相关的原创 2020-07-15 17:30:52 · 4050 阅读 · 5 评论 -
u-boot2020.04移植(总结)
我所理解的u-boot移植可以分为以下几个部分:1、内核级的配置与初始化这个主要就是在start.S文件里面那些汇编代码,这部分呢我觉得基本上没有改的必要,除非你很熟悉内核相关的东西。2、SOC级别的配置与初始化这部分的内容是比较多的,而且可以说贯穿整个u-boot,但基本上必要的都集中在lowlevel_init,其它的就取决于你是否要在u-boot阶段使用某些硬件资源了,比如网卡是在board_init_r里面,已经是靠后的位置了,有些板子甚至可能都不会在u-boot阶段使用网络,自然也原创 2020-07-13 21:33:53 · 2294 阅读 · 0 评论 -
u-boot2020.04移植(6、board_init_r)
board_init_r和board_init_f差不多,都是执行一个循环,下面看下board_init_r干了些什么:/*common/board_r.c*/static init_fnc_t init_sequence_r[] = { initr_trace, initr_reloc, /* TODO: could x86/PPC have this also perhaps? */#ifdef CONFIG_ARM initr_caches, /* Note: For Frees原创 2020-07-11 19:56:15 · 2135 阅读 · 2 评论 -
u-boot2020.04移植(5、u-boot重定位)
第一阶段结束,开始u-boot的重定位,回到arch/arm/lib/crt0.S文件:原创 2020-07-09 21:33:42 · 4334 阅读 · 5 评论 -
u-boot2020.04移植(4、board_init_f)
接着上篇,执行了ldr pc, =_main后,就到arch/arm/lib/crt0.S文件了:ENTRY(_main)/* * Set up initial C runtime environment and call board_init_f(0). *//*未定义*/#if defined(CONFIG_TPL_BUILD) && defined(CONFIG_TPL_NEEDS_SEPARATE_STACK) ldr r0, =(CONFIG_TPL_STAC原创 2020-07-07 09:51:25 · 2655 阅读 · 2 评论 -
u-boot2020.04移植(3、lowlevel_init.S)
现在开始就进入板级相关的初始化了,跳转到board/samsung/goni/lowlevel_init.S文件,注意这里lowlevel_init搜索出来在arch/arm/cpu/armv7/lowlevel_init.S文件里面也有,而且这个文件还被编译了,但仔细看一下就会发现,这个文件里面的lowlevel_init被声明成了弱属性,所以真正调用的是board/samsung/goni/lowlevel_init.S文件。ENTRY(cpu_init_crit) /* * Jump to原创 2020-07-05 18:47:04 · 1603 阅读 · 1 评论 -
u-boot2020.04移植(2、从链接脚本开始)
首先分析一下u-boot的链接脚本,这样就能够知道u-boot本身的大体组成及分布,在上一篇文章中,已经完成了u-boot的编译,在根目录下可以看到生成了一个u-boot.lds文件,这个文件就是u-boot的链接脚本,它是由arch\arm\cpu\u-boot.lds文件经过处理后得到的,其内容如下:OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")OUTPUT_ARCH(arm)/*整个u-boot的入原创 2020-07-03 22:26:52 · 1544 阅读 · 0 评论 -
u-boot2020.04移植(1、u-boot的编译)
最近公司项目用到了xilinx的zynq7000 soc,开发方式有所不同,驱动的数据都是通过设备树来提供,以前没接触过,所以想系统的学习一下相关的内容,但是手头只有一块三星的s5pv210开发板,使用的u-boot和linux系统不支持设备树,只好自己移植,以此记录一下移植过程,加深理解与记忆,如果你也刚好有需要,欢迎参考与指正。我使用的虚拟机是ubuntu1804,选的u-boot版本是最新的2020.04(u-boot下载链接),由于三星提供的交叉编译工具链版本太低了,编译不了这个版本的u-boo原创 2020-07-01 22:39:54 · 2705 阅读 · 2 评论