摘要: machine_desc->boot_params参数保存的是u-boot传入的启动参数的地址,如果没有传入启动参数,使用如下的默认参数: 内核代码通过下面的宏保存对不同的tag的处理函数, 通过__tagtable宏定义的struct tagtable都保存在特定的数据断中, 常用的3个atag解 阅读全文
posted @ 2017-12-25 21:19 bluebluebluesky 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 每一个machine,都要定义一个自己的machine_desc结构,该结构定义了该machine的一些最基本的特性。 在arch/arm/include/asm/mach/arch.h中有下面的宏,用于声明处理器相关的machine_desc结构体,并将该结构体放入vmlinux.lds中指定的段 阅读全文
posted @ 2017-12-24 21:12 bluebluebluesky 阅读(428) 评论(0) 推荐(1) 编辑
摘要: 参考:initcall机制 下面以arch_initcall(customize_machine);为例分析宏的展开过程 typedef int (*initcall_t)(void); //定义函数指针,无参数,返回int arch_initcall(customize_machine)展开为 阅读全文
posted @ 2017-12-20 21:43 bluebluebluesky 阅读(283) 评论(0) 推荐(0) 编辑
摘要: #define __init __attribute__ ((__section__ (".init.text"))) 阅读全文
posted @ 2017-12-13 20:28 bluebluebluesky 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 1、wildcard : 扩展通配符 2、notdir : 去除路径 3、patsubst :替换通配符 例子:建立一个测试目录,在测试目录下建立一个名为sub的子目录$ mkdir test$ cd test$ mkdir sub在test下,建立a.c和b.c2个文件,在sub目录下,建立sa. 阅读全文
posted @ 2017-11-15 09:43 bluebluebluesky 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 在makefile中,会经常使用shell命令,也经常见到$var 和 $$var的情况,有什么区别呢,区别大了。不要认为在makefile的规则的命令行中使用$var就是将makefile的变量和shell共享了,这里仅仅是读取makefile的变量然后扩展开,将其值作为参数传给了一个shell命 阅读全文
posted @ 2017-11-15 09:30 bluebluebluesky 阅读(195) 评论(0) 推荐(0) 编辑
摘要: ELF格式“u-boot”文件的生成规则如下,下面对应Makefile的执行过程分别分析各个依赖。 1.1 depend依赖,下面的make规则有两个目标,depend和dep 。用depend和dep一样,两个名字而已。 对应的makefile执行过程的打印信息如下: 1.2 $(SUBDIRS) 阅读全文
posted @ 2017-11-12 19:37 bluebluebluesky 阅读(2182) 评论(0) 推荐(0) 编辑
摘要: 1. 设置obj与src 一般目标输出到源代码目录下,因此执行完上面的代码后,src和obj都为空。 2.设置编译选项 主要是设置以下三个编译选项 2.1 $(ARCH)=arm,所以包含的文件是arm_config.mk,架构相关的编译选项。 arm_config.mk只有一行,内容如下 2.2 阅读全文
posted @ 2017-11-11 23:09 bluebluebluesky 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 参考:ARM平台下独占访问指令LDREX和STREX的原理与使用详解 全文转载如下: 为了实现线程间同步,一般都要在执行关键代码段之前加互斥(Mutex)锁,且在执行完关键代码段之后解锁。为了实现所谓的互斥锁的概念,一般都需要所在平台提供支持。 本文主要用来说明ARM平台上特有的独占访问指令LDRE 阅读全文
posted @ 2017-10-15 19:15 bluebluebluesky 阅读(637) 评论(0) 推荐(0) 编辑
摘要: 关于MMU,以下几篇文章写得通俗易懂: s3c6410_MMU地址映射过程详述 追求卓越之--arm MMU详解 基于S3C6410的ARM11学习(十五) MMU来了 这里总结MMU三大作用: 1.虚拟地址到物理地址的转换 2.Cache缓存控制 3.内存访问权限保护 Linux内核使用了三级页表 阅读全文
posted @ 2017-10-10 21:04 bluebluebluesky 阅读(2990) 评论(0) 推荐(0) 编辑