随笔分类 - 嵌入式Linux/Android
摘要:Android系统的启动主要包括三个阶段: ①BootLoader启动 ②Linux Kernel启动 ③Android系统启动 前面我们大致分析了前面两个步骤,即u-boot和内核的启动流程(内核启动流程待完善-_-!!),这次就来分析以下Linux内核启动之后是怎样挂载起Android这个“根文
阅读全文
摘要:Linux内核的启动分为压缩内核和非压缩内核两种,这里我们以压缩内核为例。压缩内核运行时,将运行一段解压缩程序,得到真正的内核镜像,然后跳转到内核镜像运行。此时,Linux进入非压缩内核入口,在非压缩内核入口中,完成各种初始化操作后跳转到C语言入口处运行。主要流程如下所示。 1.解压缩内核镜像 解压
阅读全文
摘要:1.配置交叉编译器 默认情况下,内核构建的是与宿主机相同的体系架构镜像。如果要交叉编译,需要设置两个变量ARCH和CORSS_COMPILE。 ①ARCH:指明目标体系架构,如x86、arm、mips等。 ②CROSS_COMPILE:指定使用的交叉编译器的前缀。例如arm-linux-。在内核顶层
阅读全文
摘要:内核的根 Makefile 负责构建两个主要的文件:vmlinux (内核镜像可执行文件)和模块文件。内核的 Makefile 从定义如下变量开始: 这些变量决定了当前内核的版本,并且被使用在很多不同的地方,比如同一个 Makefile 中的 KERNELVERSION : 接下来我们会看到很多if
阅读全文
摘要:在u-boot中,通过bootm命令启动内核。bootm命令的作用是将内核加载到指定的内存地址,然后通过R0、R1、R2寄存器传递启动参数之后启动内核。在启动内核之前需要对环境做一些初始化工作,主要有如下几个方面: (1)、cpu 寄存器设置 * R0 = 0 * R1 = 板级 id * R2 =
阅读全文
摘要:从大方面来说,u-boot的启动分成两个阶段,第一个阶段主要的职责是准备初始化的环境,主要有以下几点 ①设置异常向量表 ②把CPU的工作模式设置为SVC32模式 ③关闭中断、MMU和cache ④关闭看门狗 ⑤初始化内存、时钟、串口 ⑥设置堆栈 ⑦代码搬移 ⑧清bss段 ⑨跳转到c语言中执行(第二阶
阅读全文
摘要:参考Friendlyarm的文档,编译uboot的流程为 这个过程主要涉及到两个文件,顶层的Makefile文件和mkconfig文件,makeconfig文件是一个脚本,通过文件的注释可以了解到它的作用 意思是,mkconfig 是用来创建头文件和链接脚本,并以此来为特定的开发板配置u-boot的
阅读全文
摘要:1. Build uboot a) 安装好toolchain (arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz)并设置好 环境变量PATH,保证可以正常使用。 b) 解压 uboot_tiny4412-20130729.tgz 并进入相应的目录 tar xzf ubo
阅读全文
摘要:1.C语言内嵌汇编使用方法 C内嵌汇编以关键字”_asm_或asm开始,下辖4个部分,各部分之间用“:”分开,第一部分是必须写的,后面3个部分可以省略,但是分号:不能省略 优化后的代码 2.汇编程序框架
阅读全文
摘要:1.Android源码中的产品线解析 通常产品厂商在拿到Android源码后会在Android源码基础上进行定制修改,以匹配适应自己的产品。这就引入了产品线的概念。Android系统源码中,产品相关的文件通常保存在 device/company/product目录下其目录的组织结构为 在tiny44
阅读全文
摘要:1.Android 编译系统概述 Build 系统中最主要的处理逻辑都在 Make 文件中,而其他的脚本文件只是起到一些辅助作用。 整个 Build 系统中的 Make 文件可以分为三类: ① Build 系统核心文件,此类文件定义了整个 Build 系统的框架,而其他所有 Make 文件都是在这个
阅读全文
摘要:1.Android 挂载NFS 使用 busybox mount 来替代mount命令 2.修改Uboot中fastboot最大buff 使用U-boot烧写Android5.0的时候出现 remote: data too large 将 include/configs/tiny4412.h 改大一
阅读全文
摘要:1.Android系统中启动框架 2.首先实现驱动程序 放入内核 drivers/char修改 drivers/char/Makefile,添加:obj-y += leds_4412.o 重新编译内核 或者将其编译成模块 执行 make后 用adb push 命令将其上传到开发板的/data/loc
阅读全文
摘要:用十六进制编辑器打开 "我的文档/Source Insight/Projects/PROJECTS.DB3" 文件 ,找到你要删除的项目路径及名称字符串,用0替换相关位置的数据。
阅读全文
摘要:1.ARM工作模式 ARM微处理器支持7种工作模式,分别为: l 用户模式(usr):ARM处理器正常的程序执行状态(Linux用户态程序) l 快速中断模式(fiq):用于高速数据传输或通道处理 l 外部中断模式(irq):用于通用的中断处理 l 管理模式(svc):操作系统使用的保护模式(Lin
阅读全文
摘要:1.GCC工具链 1.GCC默认处理的文件类型 文件类型 扩展名 文件说明 文本文件 *.c C语言源文件 *.C、*.cxx、*.cc C++源文件 *.i 预处理后的C语言源文件 *.ii 预处理后的C++源文件 *.s、*.S 汇编语言 *.h 头文件 二进制文件 .o 目标文件 .so 动态
阅读全文
摘要:set fileencodings=utf-8,gb2312,gbk,gb18030 set termencoding=utf-8 set encoding=prc
阅读全文
摘要:su root 时出现错误su Authentication failure 原因是没有给root用户设置密码 sudo passwd root
阅读全文
摘要:///编译时加上-lpthread #include #include #include #include #include #include sem_t sem1,sem2; void fun(void *arg) { printf("fall asleep\n"); sem_wait(&sem1);printf(" 1\n");sem_post(&sem2); sem...
阅读全文
摘要:Linux下各种压缩包的解压方法 作者:intq 时间:2009-9-25 文章来源:来自网络 .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ——————————————— .gz 解压1:
阅读全文