Bootloader
叶玄青
我是谁
展开
-
Linux内核移植 part2:printascii详解
uboot下的printascii函数可以用来在串口打印信息,实现代码调试。这个函数实际上就是通过配置硬件相关的参数,通过uart完成打印。代码位于arch/arm/lib/debug.S#if !defined(CONFIG_DEBUG_SEMIHOSTING)#include CONFIG_DEBUG_LL_INCLUDE //debug/8250.S#endif原创 2016-12-13 10:43:59 · 1417 阅读 · 0 评论 -
Linux内核移植 part1:Exynos4412 sd卡启动uboot
Exynos4412 uboot烧写本文介绍裸机环境下如何编译烧写exynos 4412开发板的uboot1. uboot源代码下载讯为提供的源码压缩包,文件名为iTop4412_uboot_scp_20141224.tar.gz,解压后得到iTop4412_uboot_scp文件夹即可。2. CodeSign4SecureBoot下载samsung官方提供的CodeSign4SecureBoot压原创 2016-11-08 17:48:29 · 13563 阅读 · 0 评论 -
Linux内核移植 part1:uboot 框架及移植
1. 引言本文以最新版uboot(2016.05)为例介绍bootloader框架,uboot代码越来越庞大,除了boot系统之外,充当测试平台都没问题,支持的硬件也很丰富,spiflash, mmc, usb, network, serial, sound.etc, 简直就是小型的操作系统。平台相关名字设置 SoC Vendor Board Config Name apoll原创 2016-05-05 22:24:57 · 3446 阅读 · 0 评论 -
Linux内核移植 part1:全面介绍ARM Linux启动流程
本文介绍arm核cpu裸机启动过程。在cpu reset之后,pc会指向reset vector (地址位于0x00000000 or 0xFFFF0000),此时的代码需要做以下几件事情:在多核系统中,让非主要核睡眠。初始化异常向量初始化memory,包括MMU初始化不同模式下的栈以及寄存器初始化关键I/O设备针对NEON或VFP做些必要的初始化使能中断改变核心模式或者状态如果需原创 2016-11-01 11:40:48 · 8746 阅读 · 0 评论 -
Linux内核移植 part1:Exynos4412时钟模块以及UART时钟配置
一 exynos 4412 时钟模块介绍各个模块的时钟如下图所示关于各个模块的介绍见下表 1.1 顶层时钟由clocks from clock pads XRTCXTI, XXTI, and XUSBXTIclocks from CMUs ARMCLK, ACLK, HCLK, and SCLKclocks from USB phyclocks from HDMI_PHYclocks原创 2016-11-18 23:12:38 · 4862 阅读 · 0 评论 -
Linux内核移植 part2:uboot lcd驱动
人们手里的金钱是保持自由的一种工具。 —— 卢梭对于卢梭的这句话,不能同意更多啊。这次驱动一块显示屏,历时两天时间,也许是感到倦了,这篇移植文档就当终结吧。关于Linux下的framebuffer驱动就不移植了,在已有的框架下,把配置好的参数添加进去即可。一 硬件介绍显示屏为tsc2007,带电阻式触摸。平台依旧是Exynos4412。废话不多说,直接来看怎么驱动吧。二 设备树配置我的设备树文件是原创 2017-03-10 23:35:18 · 3314 阅读 · 0 评论 -
Linux内核移植 part2:uboot设备树--解析过程分析
重点还是这张图,来自 http://blog.csdn.net/abcamus/article/details/53890694整体看下来解析过程的代码比较杂糅。就不按照函数执行流行来了,先对几个功能点进行说明。基本字符串操作:const char *q;while (*p == '/') p++;if (! *p) return offset;q = st原创 2016-12-28 15:52:18 · 4443 阅读 · 0 评论 -
Linux内核移植 part1:Exynos 4412 uboot 调试
最近给Exynos 4412开发板移植了uboot,具体过程就不表了,可以参考: http://blog.csdn.net/abcamus/article/details/51326881代码都已经上传到github: https://github.com/abcamus/bootloader-for-Exynos-4412.git几个注意点:1. arch/arm/include/asm/arch原创 2016-12-08 21:12:11 · 4745 阅读 · 0 评论 -
Linux内核移植 part2:uboot设备树--生成过程分析
本文从设备树软件控制相关代码进行分析,进而理清设备树相关的知识。先放一个设备树在内存中的结构图:分析来源为$(tree)/lib/fdtdec_test.c一、数据结构文件头每个dtb都包含如下结构的文件头,用来表示设备树的基础信息。struct fdt_header { fdt32_t magic; /* magic word FDT_MAGIC */ fdt3原创 2016-12-27 16:09:23 · 3522 阅读 · 0 评论 -
Linux内核移植 part2:uboot 设备树--基本概念和源码介绍
arm uboot的设备树源文件位于arch/arm/dts/目录下,网络上有很多介绍Linux设备树概念的文章,这里以dts相关的API为切入点,如果都懂了,设备树的东西就迎刃而解了。一. dts相关源代码位于$(tree)/lib/以及$(tree)/lib/libfdt/。完成Flattened Device Tree Decode的功能。libfdt介绍: The原创 2016-12-26 23:35:12 · 4575 阅读 · 0 评论 -
Linux内核移植 part2:uboot load_addr 释疑
uboot bootm在寻找OS镜像的时候会根据load_addr变量去对应的ram地址中找。/* common/image.c */ulong genimg_get_kernel_addr_fit(char * const img_addr, const char **fit_uname_config, const char *原创 2016-12-26 12:58:58 · 4595 阅读 · 0 评论 -
Linux内核移植 part2:uboot bootdelay参数
uboot启动时会进入倒计时,如果倒计时时间内没有受到按键信息,那么自动执行启动命令。这个等待时间(启动延迟)称作:bootdelay。以环境变量的形式存在于uboot,通过配置CONFIG_BOOTDELAY可以设置这个变量。在移植exynos4412 uboot的时候,找了好一会儿才发现这个默认配置的地方。先是直接从landrover.h往回看,没找到。grep出来后一个个看头文件,第一次尽然看原创 2016-12-23 17:59:46 · 3165 阅读 · 0 评论 -
Linux内核移植 part2:uboot 设备驱动模型
最近在移植uboot-2015.04的时候发现,uboot的设备驱动也带驱动模型了,第一次见到的时候还真是愣了一下,特别是调试的时候没有以前那么方便直接了。而且设备模型和设备树捆绑在一起,又得花费一番功夫来了解了。不禁深深的感慨,搞技术的真真切切就是活到老学到老,而且这种一直学习的状态其实是外界不断强加给你的,有时候真的觉得挺累。人家改改模型,你就得重新去学习适应。其实这种学习都是高投入低产出的,原创 2016-12-23 14:10:20 · 1519 阅读 · 2 评论 -
Linux内核移植 part1:eMMC启动
时间,就象海棉里的水,只要愿挤,总还是有的。 —— 鲁迅从建立博客到现在陆陆续续有好几个童鞋来找我要代码,其中有个问题经常提到:支不支持从emmc启动。但是我移植uboot和kernel只是为了探究我自己感兴趣的东东,所以没有去关注emmc启动的问题。最近工作正好告一段落,就来看看eMMC boot的问题吧。uboot eMMC驱动框架简介检查了uboot的代码,发现在2015.04版本中是通过一原创 2017-03-02 21:40:23 · 10547 阅读 · 0 评论