![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
启动引导
redwingz
这个作者很懒,什么都没留下…
展开
-
利用cache缓存初始化内存
系统内存的初始化涉及到内存控制器的配置,需要读取DRAM条上EEPROM存储的各种配置参数,动态配置内存控制器。用汇编语言实现稍显复杂,当前的启动引导程序(如uboot)采用C语言实现这部分功能。然而,问题是在内存未初始化之前,系统是在FLASH设备中运行的汇编,C程序不能运行(原因是C语言函数的栈操作不能在FLASH中进行,FLASH的写操作需要首先擦除再写入)。要想运行C程序就需要找到一块在内...原创 2018-07-08 00:58:17 · 2610 阅读 · 0 评论 -
SYSLINUX 6.03不支持64bit的ext4
最近遇到启动盘格式化为ext4文件系统,syslinux无法启动的问题。查看其官网(https://www.syslinux.org/wiki/index.php?title=Filesystem),指出6.03版本不支持64bit的ext4文件系统,解决版本是在制作ext4文件系统时,关闭64bit选项开关。mke2fs -O ^64bit /dev/sdb1官网上提示在6.04版本会修...原创 2018-08-07 23:10:36 · 3572 阅读 · 0 评论 -
网络设备模块与驱动的初始化顺序控制
网络设备模块的初始化,使用subsys_initcall调用。subsys初始化例程的优先级为4,排在pure_initcall(优先级0)、core_initcall(1)、postcore_initcall(2)和arch_initcall(优先级3)之后。排在device_initcall(优先级6)之前。系统在启动过程中,函数do_initcalls按照优先级顺序依次调用注册的initca...原创 2018-08-08 14:10:33 · 511 阅读 · 0 评论 -
ARM架构生成uImage过程
内核编译完成之后首先在顶层目录中生成vmlinux名称的原始ELF文件,接着在arch/arm/boot/Makefile文件中,使用objcopy工具,将vmlinux转化为Image镜像,用到的参数由变量OBJCOPYFLAGS和$(OBJCOPYFLAGS_$(@F)指定,makefile编译目标位于scripts/Makefile.lib文件中。arch/arm/boot/Makef...原创 2019-04-16 20:22:53 · 2325 阅读 · 1 评论 -
多核网络处理器启动流程
以下主要针对RMI的多核处理器,例如XLR732,其由八个核心,每个核心由4个硬线程组成。上电之后,第一个核心的第一个线程启动(Core0/Thread0),从复位向量地址开始执行。假设使用的bootloader是Uboot,此线程负责初始化当前核心的cache缓存,内存初始化等。之后负责启动其它核心的首线程,即Core1/Thread0一直到Core7/Thread0。这些线程启动之后,进行本核...原创 2019-04-24 20:27:19 · 789 阅读 · 0 评论