小生聊【u-boot】
文章平均质量分 86
该专栏为u-boot相关文章,文章内容来源于自己平时学习u-boot的心得和过程记录,以及自己工作中的一些技术总结!!
iriczhao
软件工程师一枚。读书时搞过Web开发,对html + css + JavaScript开发栈有一定了解。毕业后,成了一名软件工程师,主要研究和学习MCU端软件的开发、嵌入式Linux内核、嵌入式Linux应用软件的开发。做过可穿戴设备、物联网设备、医疗控制设备的软件开发;对人工智能、物联网、智能家居、5G技术等领域同样有着浓厚兴趣。
茫茫人海中,您无意识的一眼凝眸皆是缘分,如果您有想说的话,欢迎与我交流(iriczhao@163.com);如果您发现了分享的文章出现了错误,请您多拍砖,小生将自觉改正。
展开
-
【u-boot】u-boot源码分析笔记(08)| u-boot驱动模型分析_02
本文从u-boot的启动主线开始一直描述到驱动模型的初始化,对于u-boot的驱动模型是通过调用函数来建立的。在该函数中,创建并初始化了与驱动模型相关的数据结构,还调用和扫描平台数据或者设备树节点,根据扫描的结果绑定对应的设备驱动。...原创 2022-08-09 22:56:21 · 821 阅读 · 0 评论 -
【u-boot】u-boot源码分析笔记(07)| u-boot驱动模型分析_01
u-boot有一个功能强大的驱动模型,这一点与linux内核一致。驱动模型对设备驱动相关操作做了一个抽象:使用来描述设备类,使用来描述驱动,使用来描述设备。(1-1)uclassuclass表示以相同特征方式运行的一组device。uclass提供一种以相同接口方式访问组内单个设备的方式。例如:GPIO类提供了get/set值的操作。一个I2C类可能有10个I2C端口,其中4个用于一个驱动程序,6个用于另一个驱动程序。该结构由表示(/include/dm/uclass.h):(1-2)driver用于提供原创 2022-08-06 12:07:47 · 1498 阅读 · 0 评论 -
【u-boot】如何自定义u-boot的命令
在实际开发中,我们可以创建新的命令结构,然后将命令添加到U-Boot中。步骤大致如下:首先在命令描述文件中包含command.h,然后再使用或宏来填充name:命令名称。注意:这不是一个字符串。maxargs:此函数接受的最大参数值,包括命令本身。repeatable:0 - 不允许自动重复;1 - 允许自动重复。command:指向命令函数的指针。这是在u-boot命令行下发出命令时调用的函数。usage:用于描述命令的提示信息。是一个字符串。help:长描述。这是一个字符串。......原创 2022-08-05 22:18:39 · 354 阅读 · 0 评论 -
【u-boot】u-boot源码分析笔记(03) | 运行主线board_init_r分析
本文描述u-boot的运行主线函数:board_init_r原创 2022-07-18 20:25:00 · 658 阅读 · 0 评论 -
【u-boot】u-boot源码分析笔记(02) | 运行主线board_init_f分析
本文描述u-boot的启动主线函数:board_init_f。原创 2022-07-18 20:20:10 · 768 阅读 · 0 评论 -
【u-boot】u-boot源码分析笔记(01) | 运行主线_main分析
在_main标签中,执行流大致如下(1)为调用board_init_f()设置初始环境。这种环境只提供堆栈和存储GD(‘globaldata’)结构的位置,这两者都位于一些容易可用的RAM(SRAM,锁定缓存…)中。在这里,变量、全局数据,初始化或未初始化(BSS)都是不可用的。只有常量初始化数据可用。在调用之前,gd应该是零。(2)调用该函数为系统准备RAM(DRAM、DDR…)(由于此刻RAM可能还不可使用),board_init_f必须使用当前的gd来存储必须传递到后面阶段的所有数据。........原创 2022-07-18 20:17:41 · 504 阅读 · 0 评论 -
【u-boot】u-boot Sandbox编译构建和使用总结
u-boot sandbox是一个上层应用代码测试环境,“sandbox”架构设计允许U-Boot在Linux下运行,几乎可以运行在任何硬件平台上。因此,将U-Boot作为了一个普通的C应用程序来编译构建,带有main()和普通的C库。所有特定体系结构的代码都不能构建进U-Boot sandbox中。在Linux下运行U-Boot的目的是:测试u-boot中所有通用代码,而不是特定于任何一个架构的代码。主要使用sandbox来运行、测试上层代码。下文将描述如何在ubuntu18.04下编译构建和使用u-bo原创 2022-07-12 21:48:53 · 1525 阅读 · 0 评论 -
【u-boot】u-boot源码分析笔记(06)| 启动过程中的gd分析
注意:本文以ARM架构下的u-boot源码来进行分析。u-boot版本:4.1.15在u-boot源码下,随处可见gd,那么文本就来看看神秘的gd》》》》》》》包含两个内容:(1)gd是如何定义的(2)gd_t结构体定义一、gd是如何定义的在U-Boot的源码中,使用寄存器r9来表示全局数据结构gd。以下代码片段出自u-boot Dir/arch/arm/include/asm/global_data.h#ifdef __clang__#define DECLARE_GLOBAL_D原创 2021-10-19 08:20:34 · 1537 阅读 · 0 评论 -
【u-boot】u-boot源码分析笔记(04)| initcall_run_list()函数分析
一、initcall_run_list()函数u-boot初始化过程比较复杂。排除一些汇编代码外,复杂的初始化过程以一个个C语言函数来描述。这些函数的定义过程代表着u-boot启动过程中对硬件平台的初始化过程。在u-boot中,对这些函数调用过程放进了一个函数指针数组中,该数组的组成元素即为初始化函数名。对这些函数列表进行调用执行的操作,在u-boot中是由initcall_run_list()函数完成的。在u-boot 目录/include/initcall.h文件中。typedef int (*i原创 2021-10-18 21:21:10 · 759 阅读 · 0 评论 -
【u-boot】u-boot源码分析笔记(05)| bootz命令启动linux内核的过程分析
本文描述bootz命令启动linux内核的过程。原创 2021-10-17 20:59:06 · 1980 阅读 · 0 评论 -
【u-boot】u-boot源码分析笔记(09)| u-boot命令行解析过程分析
u-boot的主线运行过程中,在board_init_r()函数进行u-boot初始化过程的最后一个过程则是:。该函数名为run_main_loop()。定义如下:main_loop()函数定义在文件./common/main.c中,如下所示:由以上代码可见,有两个重要函数:(1)autoboot_command(s)函数:用于检测u-boot启动过程中的【倒计时过程】是否结束。【倒计时】结束之前是否被打断。(2)cli_loop():该函数是u-boot的命令行处理函数,当我们在u-boot命令原创 2021-10-17 20:38:42 · 988 阅读 · 0 评论