
嵌入式linux
BoySKung
这个作者很懒,什么都没留下…
展开
-
重新搭建嵌入式LINUX中碰到的问题
已经搭建好的嵌入式环境不小心被破坏了,破坏得还真彻底,需要重新从bootloader烧起,这不能不说是一件痛苦的事。同样的UBOOT,同样的内核,也是同样的烧写工具,却碰到了不同的问题。难道这些问题是由唯一不同的时间产生的,没这么恐怖吧(呵呵),不过还好,折腾了一天还是把问题都解决了,生怕下次还碰到类似的事,所以把碰到的问题和解决方法都记录下来: 1.一个匪夷所思的问题 把UBOOT烧到转载 2008-04-10 17:15:00 · 1647 阅读 · 0 评论 -
linux make menuconfig 执行流程小结
linux/2.6.20.6/make menuconfig 当在顶层目录执行”make menuconfig”会执行顶层Makefile 第415行的规则 config %config: scripts_basic outputmakefile FORCE $(Q)mkdir -p include/linux include/config $(Q)$(MA原创 2008-12-24 15:09:00 · 8715 阅读 · 2 评论 -
linux zImage生成过程详解
可以看到,在顶层makefile的第278行,包含了scripts/Kbuild.include文件,在这里定义了大量的函数和变量,供顶层makefile和其他makefile文件使用。 在顶层makefile文件的第412行,包含了arch/arm/Makefile。这个是体系结构相关makefile文件。它定义了体系结构相关的一些变量及规则。 当执行”make”时,arch/arm原创 2008-12-26 18:13:00 · 4748 阅读 · 0 评论 -
linux的uboot启动映像uImage制作过程
在arch/arm/boot/Makefile 62行开始有命令和规则: quiet_cmd_uimage = UIMAGE $@ cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel / -C none -a $(ZRELADDR) -e $(ZRELADDR原创 2008-12-26 18:30:00 · 2030 阅读 · 0 评论 -
linux 0.11 之中断管理
1、 中断源和异常源 处理器从两种地方接收中断:外部硬件的中断和软件产生的中断。处理器接收的异常源也有两个:处理器检测到的程序错误异常和软件产生的异常。 通过软件产生中断或异常,都是由指令INT n实现,其中n是中断或异常向量号。 2、 向量号 每个中断或异常都有一个向量号,通过这个向量号可以在中断描述符表IDT中索引一个描述符,这个描述符可以找到中断处理程序入原创 2009-03-26 14:19:00 · 540 阅读 · 0 评论 -
linux 0.11 之任务管理
注意,下文提到的任务和进程是指同一个概念1、 相关数据结构和寄存器 a、 任务控制块:struct task_struct {/* these are hardcoded - dont touch */ long state; /* -1 unrunnable, 0 runnable, >0 stopped */ long原创 2009-03-26 18:29:00 · 745 阅读 · 0 评论 -
linux 紧急bash救援
当linux启动时按任意键进入到grub界面,然后按下e对grub进行编辑,把光标移动到kernel 所在的行后再按e,这样就可以进行编辑了。 在这一行后面添加init=/bin/bash,然后按enter,再按b就可以启动了。当内核引导时,它将以/bin/bash而不是通常的 /sbin/init 作为第一个进程启动,您不会被提示进行登录就能看到一个 root 用户 bash 提示符。原创 2009-03-26 22:34:00 · 385 阅读 · 0 评论 -
linux 0.11 之内存管理
1、 概述 在intel 80x86 CPU中,程序在寻址过程中使用的是由段和偏移值构成的地址CS:[EIP]。程序中由16位的段和32位的偏移构成48位地址或长指针称为一个逻辑地址(虚拟地址)。它唯一确定了一个数据对像的段地址和段内偏移地址。而仅由32位偏移地址或指针指定的地址是基于当前段的对象地址。 逻辑地址会由分段机制转换为线性地址。此时如果启用了分页机制,则线性地址会由分页原创 2009-03-27 19:01:00 · 839 阅读 · 0 评论 -
linux 0.11 之信号管理
1、 概述 在unix系统中,信号是一种“软件中断”处理机制。有许多较为复杂的程序会使用到信号。信号机制提供了一种处理异步事件的方法。 在内核代码中通常使用一个无符号长整数(32位)中的比特位来表示各种不同的信号,因此最多可表示32个不同的信号。 2、 进程对信号的三种处理或操作方式 a、 忽略该信号。SIGKILL和SIGSTOP这两个信号不能被忽略。b、原创 2009-03-27 11:20:00 · 585 阅读 · 0 评论 -
m41t81驱动中对时间的处理
我的环境:BOARD:S3C2410SYSTEM:LINUX2.6.20.6时钟芯片:M41T81 这两天一直在对M41T81的驱动进行调试,我在应用程序中设的时间在读取后老是不对,还好最终搞定了。 首先看一下对时钟进行设置的数据结构struct rtc_time { int tm_sec; int tm_min; int tm_hour; int tm_mday; i原创 2009-08-08 17:24:00 · 1138 阅读 · 1 评论 -
linux 2.6.x Makefile
linux-2.6.x makefile linux-2.6.20.6/Documentation/kbuild/makefiles.txt 一、 概述 linux的makefile有五个部分: Makefile:顶层Makefile .config:内核配置文件 arch/$(ARCH)/Makefile:体系结构相关的Makefile scripts/M翻译 2008-12-18 14:35:00 · 1922 阅读 · 0 评论 -
elf格式学习总结
当编译一个源文件生成目标文件时,会在目标文件中生成符号表和重定位表。 符号表包含在文件中定义的全局符号以及在文件中引用的外部符号(外部函数或变量)。 重定位表告诉链接器在哪些位置要进行重定位操作。 编译生成的目标文件在文件的开始处会有一个elf头,描绘了整个文件的组织结构。它还包括很多节(section)。这些节有的是系统定义好的,有些是用户在文件中通过.section命令原创 2008-12-10 09:13:00 · 1113 阅读 · 0 评论 -
ARM-linux启动的流程
转自http://blog.ccidnet.com/blog-htm-do-showone-uid-34335-type-blog-itemid-92205.htmlARM-linux启动的流程 -=-=-=-=-=>下面是我收藏的一篇好文章,就是忘记是那位仁兄,写的了,如果您正好看到这篇文章,请补注您的作者信息-------------------------------转载 2008-10-23 09:24:00 · 1236 阅读 · 1 评论 -
ARM Linux Boot Sequence
The following traces the Linux boot sequence for ARM-based systems in the 2.6.18 kernel. It looks at just the earliest stages of the boot process, until the generic non-processor-specific start_kerne转载 2008-11-20 15:26:00 · 728 阅读 · 0 评论 -
链接器和链接过程概览
开发者在c/c++源文件和头文件中编写程序。部分程序可用汇编编写,并放在相应的汇编源文件中。开发者为make工具创建一个makefile文件,这样可以轻松追踪文件的修改并根据需要调用编译器和汇编器重新build源文件。编译器和汇编器从这些源文件中生成包含机器码和程序数据的目标文件。归档工具连接一组目标文件形成一个库。链接器把这些目标文件作为输入并生成一个可执行映像或是可被用于和其他目标文件翻译 2008-11-21 17:47:00 · 1247 阅读 · 0 评论 -
引导armlinux
启动armlinux,bootloader必须提供下面几步: 1. 设置并初始化ram 2. 初始化一个串口 3. 检测处理器类型 4. 设置内核标记列表 5. 调用内核映像 1. 设置并初始化ram bootloader要找到并初始化系统中所有的ram,内核将这些ram用于可变数据的存储。 2. 初始化一个串口 bootloader应该在目标原创 2008-11-19 13:44:00 · 917 阅读 · 0 评论 -
Executable and Linking Format(ELF)
Executable and Linking Format(ELF) 一个目标文件一般包括 1) 关于目标文件的通用信息,如文件大小、二进制代码和数据大小以及创建这个目标文件的源文件名。 2) 体系结构相关的二进制指令和数据。 3) 符号表和符号重定位表。 4) 供调试者使用的调试信息。 这些信息在目标文件组织的方式称为目标文件格式。有了标准的目标文件格式,不同的厂翻译 2008-11-24 13:38:00 · 1652 阅读 · 0 评论 -
elf格式学习笔记之目标文件
最近在学习elf格式,那遍介绍elf格式的文档分两部分介绍elf格式,第一部分是目标文件,第二部分是程序加载和动态链接。文档我会上传的我的资源里,有兴趣的可以下载,不用资源分的。这里是我学习第一部分时记的一些笔记 一、简介 三种主要类型的目标文件: 1、可重定位文件:保存着代码和数据,这些代码和数据适合和其他目标文件链接在一起,生成一个可执行文件或共享目标文件。 2原创 2008-12-01 13:30:00 · 1338 阅读 · 0 评论 -
elf格式学习笔记之程序加载和动态链接
第二部分 程序加载和动态链接 一、简介 第二部分介绍了目标文件信息和创建运行程序的系统操作,这里的有些信息适用于所有系统,有些则是处理器相关的。 可执行文件和共享目标文件都是静态表示程序。为了执行这样的程序,系统用这些文件来创建动态程序表示或是进程映像。一个进程映像有一些segment保存着代码、数据、堆栈等。 二、程序头 可执行文件和共享目标文件的原创 2008-12-02 17:37:00 · 1281 阅读 · 0 评论 -
arm-linux源码分析之解压内核映像
linux-2.6.20.6/arch/arm/boot/compressed/head.S 开头有一段宏定义,我们只看其中一段,分析一下gnu arm汇编的宏定义 #elif defined(CONFIG_ARCH_S3C2410) .macro loadsp, rb mov /rb, #0x50000000原创 2008-12-05 00:05:00 · 2548 阅读 · 1 评论 -
arm-linux源码分析之cpu初始化
linux-2.6.20.6/arch/arm/kernel/head.S 这是解压内核后内核入口所在的文件,完成内核解压后将控制权将转移到这里的入口。 先看一下arch/arm/kernel/vmlinux.lds这个链接脚本,在开头186. OUTPUT_ARCH(arm)187. ENTRY(stext)188. jiffies = jiffies_64原创 2008-12-09 22:06:00 · 2451 阅读 · 2 评论 -
编译器的版本惹的祸
今天在编译一个RTC驱动测试程序时,出现了如下的一大堆提示:In file included from /opt/host/armv4l/lib/gcc-lib/armv4l-redhat-linux/2.95.3/../../../../armv4l-redhat-linux/include/sys/select.h:31, from /opt/host/ar原创 2009-08-13 10:47:00 · 1338 阅读 · 1 评论