
bootloader
天麓
很懒的码农
展开
-
微视linux uboot保留内存的传递
[uboot] uboot启动kernel篇(二)——bootm跳转到kernel的流程https://blog.youkuaiyun.com/ooonebook/article/details/53495021从0移植uboot (二) _uboot启动流程分析https://www.cnblogs.com/xiaojiang1025/p/6496704.html简析PPC的Device Tr...原创 2019-07-06 22:15:33 · 603 阅读 · 1 评论 -
ppc解析保留内存
void __init early_reserve_mem(void)powerpc linux 设备树解析https://blog.youkuaiyun.com/bluewindkanan/article/details/8968132原创 2019-06-30 18:51:04 · 161 阅读 · 0 评论 -
uboot入门学习二 位置无关代码以及地址
test_got(void)fff87260: stwu r1, -16(r1)fff87264: mflr r0fff87268: bcl- 20, 4*cr7+so, fff8726cfff8726c: stw r30, 8(r1)fff87270: mflr r30fff87274: addis r30, r30, 3fff87278:...原创 2019-04-19 22:42:15 · 414 阅读 · 1 评论 -
慢慢欣赏linux 串口驱动前传uboot传递串口参数
uboot找到默认串口int do_bootm_linux(int flag, int argc, char * const argv[], bootm_headers_t *images) =>boot_prep_linux(images); =>ret = boot_body_linux(images); =>/* allocate spac...原创 2018-09-08 22:02:53 · 383 阅读 · 1 评论 -
微视linux 根文件系统之二 bootloader(以uboot为例)的准备
初始化linux内核镜像结构static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]){ memset((void *)&images, 0, sizeof(images)); images.verify = env_get_yesno("verify");...原创 2019-10-20 11:48:11 · 307 阅读 · 1 评论 -
慢慢欣赏linux if_changed_xxx的作用
编译内核会生成很多临时文件,以 o.cmd为后缀。打开看发现是编译脚本。这些文件是在scripts/makefile.build文件通过如下编译宏实现:define rule_cc_o_c $(call echo-cmd,checksrc) $(cmd_checksrc) \ $(call echo-cmd,cc_o_c) $(cmd_cc_o_c); \ $(cmd_modversions) \ $(call echo-cmd,record_mcount)原创 2020-06-25 11:45:35 · 1339 阅读 · 1 评论 -
问题定位 uboot下无法ping通tftpserver
现象 单板启动, uboot进入命令行模式, 无法ping通tftpserver #ping 10.100.10.111 Speed: 100, full duplex Using ethernet@xxx device ARP Retry count exceeded; starting again ping failed; host 10.100.10.111 is not alive定位过程 1 交叉对比实验,发现同事的电脑能够ping通,并且...原创 2021-09-08 09:44:52 · 1609 阅读 · 0 评论 -
linux内核学习(2)建立段式内存映射
grub 在加载linux内核之前已经进入保护段式映射模式/* The code segment of the protected mode. */#define CODE_SEGMENT 0x10 // 0b'000 10 000 => 01 => 2, 第2个段选择子/* The data segment of the protected mode. */#define DATA_SEGMENT 0x18 // 0b'000 11 000 => 11 => 3,原创 2020-10-02 22:41:33 · 188 阅读 · 0 评论 -
grub学习(4) 启动linux内核
grub_err_tgrub_linux_boot (void){ struct linux_kernel_params *params; int e820_num; params = real_mode_mem; /* 获取内存分布 */ int NESTED_FUNC_ATTR hook (grub_uint64_t addr, grub_uint64_t size, grub_memory_type_t type) { switch ...原创 2020-08-18 22:18:18 · 311 阅读 · 0 评论 -
grub学习(3) 加载initrd
grub_err_tgrub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)), int argc, char *argv[]){ struct linux_kernel_header *lh; /* 打开initrd并计算其需要的页面 */ file = grub_file_open (argv[0]); size = grub_file_size (file); initrd_pages = (page_ali...原创 2020-08-18 22:08:56 · 470 阅读 · 0 评论 -
grub学习(2) 加载内核
grub_err_t grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), int argc, char *argv[]){ struct linux_kernel_header lh; struct linux_kernel_params *params; file = grub_file_open (argv[0]); //打开linux文件 grub_file_read (file, &lh, sizeof (.原创 2020-08-16 09:47:01 · 954 阅读 · 0 评论 -
grub学习(1) 第一阶段启动
深入理解 GNU GRUB - 02 boot.S 2.1 相关BIOS例程https://blog.youkuaiyun.com/cppgp/article/details/6360976grub2 1.95 源码分析之一 —— boot.S 分析及注释https://blog.youkuaiyun.com/cppgp/article/details/2060146原创 2020-08-02 12:43:51 · 308 阅读 · 0 评论 -
x86内核启动分析一 看看打印吧
自己虚拟机的iomap [root@localhost mach-visws]# cat /proc/iomem 00000000-0009fbff : System RAM 00000000-00000000 : Crash kernel 0009fc00-0009ffff : reserved 000a0000-000bffff : Video RAM area 000c000原创 2017-07-27 19:55:39 · 1588 阅读 · 0 评论 -
uboot入门学习一 源码路径
http://ftp.denx.de/pub/u-boot/uboot启动代码分析之系统引导时为什么要关闭Cacheshttps://blog.youkuaiyun.com/xuan_h/article/details/24125561原创 2018-01-24 07:24:09 · 357 阅读 · 0 评论 -
内存自刷新
内存刷新保证设备运行的时候内存颗粒电容不丢失。自刷新配置是在bootloader阶段内存控制器初始化配置。设备复位部分内存的内容如果想要保留,也就是说复位后仍然需要保留,可以通过临终遗言中断+内存自刷新实现。CPU到内存颗粒A10管脚是内存刷新管脚...原创 2018-03-14 07:41:09 · 3108 阅读 · 0 评论 -
慢慢欣赏linux x86 bootloader加载kernel的策略
对于老的x86来说,bootloader把内核看成两部分,实模式部分和保护模式部分。bootloader分别把实模式和保护模式加载到内存的不同地方,然后跳转到实模式部分。实模式最后跳转到保护模式部分。不同的bootloader必须都按照这个规矩来。下面以uboot为例讲解流程 struct boot_params *load_zimage(char *image, unsigned...原创 2018-08-10 22:27:15 · 1069 阅读 · 0 评论 -
慢慢欣赏linux quiet参数的作用
cmdline从bootloader传递给kernel 例如cmdline=...quiet... =>early_param("quiet", quiet_kernel);//解析出quiet =>int __init quiet_kernel(char *str) =>console_loglevel = 4;//prin...原创 2018-09-22 19:32:13 · 3927 阅读 · 0 评论 -
UEFI BIOS 学习笔记
初始化流程PEI//PRE EFI包括CPU CHIPSET BOARD初始化,32bit,单核=>DXE//protocol和handle两种,对应SDK1和SDK2,向下兼容=>BPS=>TSL例如LILO=>OSBIOS提供一堆API,即SDK,SDK1支持protocol模式,SDK2支持handle模式,SDK2也支持SDK1的protocol,但是最好用handle。新增功能需要原创 2017-06-21 06:18:11 · 536 阅读 · 0 评论