随笔分类 - 嵌入式学习之Linux系统移植篇
包括Bootloader(U-boot)移植、Linux内核移植以及Linux根文件系统的构建
摘要:解决方法:配置内核 make menuconfig File Systems ---> DOS/FAT/NT Filesystems ---> (utf8) Default iocharset for FAT 改为 (cp936) Default iocharset for FAT 重新编译内核,烧写到...
阅读全文
摘要:详细步骤参考自:http://www.cnblogs.com/wanyao/archive/2011/11/21/2257628.html 过程比较顺利,结果截图如下: 这里需要注意的是:http://www.cnblogs.com/nufangrensheng/p/3669623.html中”6、General setup选项配置:”给出的提示: 注意:添加了自己的信息“Ycha...
阅读全文
摘要:通常在开发板上搭建好开发平台后,我们会试着移植一个最简单的应用程序Hello world来测试一下。初次尝试,我们经常会碰到的问题就是,在开发板上运行./hello的时候出错:-bin/sh ./hello not found。 遇到这种错误,原因有如下两种: 一、在配置Busybox的时候,如果选择了Busybox Settings—>Build Options—>Build BusyBox...
阅读全文
摘要:一、首先编译并安装BusyBox 这里使用的交叉编译器还是3.4.5. 注意:编译内核、编译BusyBox以及编译文件系统中的所有应用程序的交叉编译器要使用同一个版本。 1、获取BusyBox源码 下载地址:http://www.busybox.net/downloads/ 这里下载 busybox-1.13.0.tar.bz2 2、修改并配置BusyBox 解压BusyBox,进入...
阅读全文
摘要:在内核里支持两个串口,也就是芯片的UART0和UART1,而UART2的驱动是针对红外接口的,而不是串口驱动,这里将其修改为串口驱动。 一、修改内核源码arch/arm/mach-s3c2440/mach-smdk2440.c文件的第100行,将其改为: .ulcon = 0x03, 二、修改内核源码drivers/serial/samsung.c文件: 1、在第53行...
阅读全文
摘要:内核源码:linux2.6.30.4 交叉编译工具:3.4.5 移植linux内核至:TQ2440 工作基础:http://www.cnblogs.com/nufangrensheng/p/3669623.html 一、下载yaffs2源码 二、进入yaffs2目录,执行打补丁脚本文件patch-ker.sh,打补丁到内核中: cd yaffs2 ./patch-ker...
阅读全文
摘要:内核源码:linux2.6.30.4 交叉编译工具:3.4.5 移植linux内核至:TQ2440 工作基础:http://www.cnblogs.com/nufangrensheng/p/3669623.html Linux内核中已经做好了Nand Flash的驱动,只需要进行适当的修改即可使用。 一、修改内核源码arch/arm/plat-s3c24xx/common-sm...
阅读全文
摘要:内核源码:linux2.6.30.4 交叉编译工具:3.4.5 移植linux内核至:TQ2440 1、进入内核顶层目录,修改顶层Makefile,大概在193和194行,将ARCH和CROSS_COMPILE修改为如下所示: ARCH ?= arm CROSS_COMPILE ?= arm-linux- 2、修改内核源码arch/a...
阅读全文
摘要:根文件系统是指挂载于文件系统层次结构根部的文件系统,简单的表示为/。简单来说,根文件系统是内核挂载的第一个文件系统,挂载的位置是文件系统层次结构的顶端。 Linux系统对于根文件系统有一些特殊的要求。Linux要求根文件系统中包含应用程序和工具软件,通过它们来引导系统、初始化系统服务(比如网络和系统控制台)、加载设备驱动程序和挂载额外的文件系统。
阅读全文
摘要:很多嵌入式开发人员都需要在Linux内核中添加一些特性,以支持特别的定制硬件。 ARM架构的顶层Kconfig文件中,可以看到一个名为System Type的菜单项。在ARM system type提示后有一系列与ARM架构相关的选择项。 ARM架构的顶层Kconfig文件通过source指令包含了具体与s3c2440相关的一些Kconfig定义: source "arch/arm/m...
阅读全文
摘要:Linux内核源码中,差不多有300个内核子目录都包含了名为Kconfig的文件。这个文件用于配置其所在目录的源码的特性。Kconfig中的每个配置参数都有附带的帮助文本,配置子系统会解析Kconfig的内容,并提示用户做出配置选择。 配置工具(比如menuconfig)会读取各个子目录中的Kconfig文件,首先读取的是arch子目录中的Kconfig文件。它是在…/scripts/kconf...
阅读全文
摘要:在顶层Linux源码目录中输入命令make help,它会显示一长串从源码树中生成的目标列表。最常见的使用make的方式是不指定目标,在这种情况下,它会生成内核ELF文件vmlinux和针对所选架构的默认二进制镜像(例如,x86架构的bzImage)。使用make时,如果不指定目标,它也会编译所有由配置文件指定的设备驱动程序模块(内核可加载模块)。 很多架构和机器类型都需要一个二进制镜像目标,而...
阅读全文
摘要:在命令行中,进入顶层内核目录,并输入命令make menuconfig,就可以启动一个基于菜单的内核配置编辑器。从这里开始,你可以访问每个可用的配置参数,并生成一个定制的内核配置。 当你退出配置编辑器时,它会提示你是否保存修改,如果选择保存修改,全局配置文件.config就会被更新(如果不存在,则会被创建)。 顶层Makefile会使用这个.config文件来构建内核。 大多数内核软件模块也...
阅读全文
摘要:1、在加电复位之后,大多数处理器都会从一个默认的地址处获取代码。比如MIPS结构的CPU会从0xBFC00000处取第一条指令,而ARM结构的CPU则从地址0x00000000处取第一条指令。因此,在嵌入式开发板中,需要把存储器件ROM或Flash等映射到这个默认的地址处,Bootloader就存放在这个地址开始处,这样一上电就可以执行Bootloader。 2、当Bootloader完成基本的...
阅读全文
摘要:addr2line addr2line是用来将程序地址转换成其所对应的程序源文件、代码行以及所对应的函数。 ar ar是用来管理档案文件的,在嵌入式系统开发中,ar主要是用来对静态库进行管理。 ar常用的几个参数总结: c 创建一个档案文件 r 向档案文件中增加文件 t 显示档案文件中存在哪些文件 s 用于指示生成索引以加快查找速度 d 从档案文件中删除文件...
阅读全文
摘要:前言 交叉编译,即在一种平台上编译,并能够运行在另一种体系结构完全不同的平台上。交叉编译使用的工具,一般称为交叉编译工具,由于它是由多个程序构成,所以又称为交叉编译工具链。 交叉开发工具链就是为了编译、链接、处理和调试跨平台体系结构的程序代码。每次执行工具链软件时,通过带有不同的参数,可以实现编译、链接、处理或者调试等不同的功能。 工具链的组成 工具链一般由编译器、连接器、解释器和调试器组...
阅读全文