- 博客(29)
- 收藏
- 关注
转载 uart-232
RS-232求助编辑百科名片个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组 RS-232 接口,分别称为 COM1 和 COM2。目录EIA RS-
2013-03-28 10:07:45 2500
原创 arm-linux-ld
一、arm-linux-ld的作用:将多个目标文件、库文件连接成可以执行文件.二、arm-linux-ld的实际使用:主要分两种形式:1.直接指定代码段、数据段、BSS段的起始地址.使用格式如下:-Ttext startaddr//代码段的起始地址-Tdata startaddr//数据段的起始地址-Tbss startaddr //bss段的起始地址例子分析:
2013-03-28 09:54:38 1137 1
原创 常用Makefile知识点汇总
嵌入式LINUX编程中,Makefile是必须涉及的.作为笔记,仅对工作学习常用的MAKEFILE知识点进行汇总.1.MAKEFILE的基本规则: target:prerequisites command ... 各项的意义如下: target:目标文件; prerequisites:生成目标文件的依赖文件
2013-03-28 09:53:53 753
原创 arm-linux-gcc
一、编译步骤: 一个源码文件需要经过预处理、编译、汇编和连接四个步骤完成可执行档的生成. 1.预处理 处理的内容: C/C++源文件中,以"#"开关的命令被称为预处理命令,如包含命令"#include"、宏定义命令"#define"、条件编译命令"#if"、"#ifdef"等.预编译阶段完成的工作是将头文件(include)的文件插入
2013-03-28 09:53:17 1452
原创 arm-linux-objcopy
一、概述: arm-linux-objcopy被用来复制一个目标文件的内容到另一个文件中.此选项可以进行格式的转换.在实际编程的,用的最多的就是将ELF格式的可执行文件转换为二进制文件. 如: Arm-linux-objcopy –o binary –S elf_file bin_file 二、常用选项: 1.input-file、outf
2013-03-28 09:52:21 6381
原创 arm-linux-objdump
arm-linux-objdump用来显示二进制文件信息,实际编程中最常用的就是用来查看反汇编代码. 如: 将ELF格式的文件转换为反汇编文件: arm-linux-objdump -D -b elf_file > dis_file 将二进制文件转换为反汇编文件: arm-linux-objdump -D -b binary -m arm bin_
2013-03-28 09:51:54 1748
转载 连接脚本xxx.lds
转自:http://linux.chinaunix.net/techdoc/beginner/2009/08/12/1129972.shtml今天在看uboot引导Linux部分,发现要对链接脚本深入了解,才能知道各个目标文件的内存分布映像,下面是我看到的一些资料0. Contents 1. 概论2. 基本概念3. 脚本格式4. 简单例子5. 简单脚本命令6. 对符
2013-03-28 09:51:20 669
转载 Linum kernel从入口到start_kernel的代码分析
linux kernel 从入口到start_kernel 的代码分析本文的很多内容是参考了网上某位大侠的文章写的>,有些东西是直接从他那copy过来的。最近分析了一下u-boot的源码,并写了分文档, 为了能够衔接那篇文章,这次又把arm linux的启动代码大致分析了一下,特此写下了这篇文档。一来是大家可以看看u-boot到底是如何具体跳转到linux下跑的,二来也为自己更深入的学习l
2013-03-28 09:50:40 640
转载 解析 Linux 中的 VFS 文件系统机制
解析 Linux 中的 VFS 文件系统机制简介: 本文阐述 Linux 中的文件系统部分,源代码来自基于 IA32 的 2.4.20 内核。总体上说 Linux 下的文件系统主要可分为三大块:一是上层的文件系统的系统调用,二是虚拟文件系统 VFS(Virtual Filesystem Switch),三是挂载到 VFS 中的各实际文件系统,例如 ext2,jffs 等。本文侧重于通过具体的代
2013-03-28 09:50:00 593
转载 do_initcall()函数的说明
1.在看linux核心代码的时候看到/init/main.c 里面的do_initcalls函数static void __initdo_initcalls(void)742 {743 initcall_t *call;744745 for (call = __initcall_start; call __initcall_end;
2013-03-28 09:49:12 1755
转载 解密module_init
在Linux底下写过driver模块的对这个宏一定不会陌生。module_init宏在MODULE宏有没有定义的情况下展开的内容是不同的,如果这个宏没有定义,基本上表明阁下的模块是要编译进内核的(obj-y)。1.在MODULE没有定义这种情况下,module_init定义如下:#define module_init(x) __initcall(x);因为#define __ini
2013-03-28 09:47:46 666
转载 Linux中find常见用法
Linux中find常见用法·find path -option [ -print ] [ -exec -ok command ] {} \;#-print 将查找到的文件输出到标准输出#-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格#-ok 和-exec相同,只不过在操作前
2013-03-28 09:31:16 506
转载 arm-linux-strip
用strip处理过后,将去掉其中的调试信息,执行文 件大小也将小很多。命令如下: # arm-linux-strip libsqlite3.so.0.8.6
2013-03-28 09:26:15 666
转载 内核命令行传递的传递过程
转自:http://blog.chinaunix.net/uid-20543672-id-3151113.htmlLinux内核在启动的时候需要一些参数,以获得当前硬件的信息或者启动所需资源在内存中的位置等等。这些信息可以通过bootloader传递给内核,比较常见的就是cmdline。以前我在启动内核的时候习惯性的通过uboot传递一个cmdline给内核,没有具体的分析这个过程
2013-03-28 09:25:26 684
转载 Shell for&while 循环详细总结
#!/usr/bin/ksh#数字段形式for i in {1..10}do echo $idone#详细列出(字符且项数不多)for File in 1 2 3 4 5 do echo $File done #对存在的文件进行循环for shname in `ls *.sh`do name=`echo "$s
2013-03-28 09:24:41 490
转载 console_init初始化的研究
在linux初始化过程中,除非启用了early console,否则直到console_init调用之前是没有任何输出的,它们的输出都放在__log_buf这个缓冲内的,在console_init调用时再将这个缓冲区内的数据一次性输出。void __init console_init(void){initcall_t *call;/* Setup the default TTY
2013-03-28 09:23:22 1037
转载 解析linux根文件系统的挂载过程
一:前言 前段时间在编译kernel的时候发现rootfs挂载不上。相同的root选项设置旧版的image却可以。为了彻底解决这个问题。研究了一下rootfs的挂载过程。特总结如下,希望能给这部份知识点比较迷茫的朋友一点帮助。 二:rootfs的种类 总的来说,rootfs分为两种:虚拟rootfs和真实rootfs.现在kernel的发展趋势是将更多的功能放到用户空间完成。以保
2013-03-26 14:07:13 518
转载 ARM处理器中8位位图的理解
在ARM处理器的汇编语言中,对指令语法格式中的的常数表达式有这样的规定:“该常数必须对应8位位图,即常数是由一个8位的常数循环移位偶数位得到的。”对于这句话,我一开始学ARM时不理解,到了后来为了做设计,去看BootLoader源码时,才认真地在网上查找相关资料,理解了这句话。 首先从ARM指令系统的语法格式说起。 一条典型的ARM指令语法格式分为如下几个部分:
2013-03-26 14:04:53 590
转载 Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7)
分类: LINUX 研究内核源码和内核运行原理的时候,很总要的一点是要了解内核的初始情况,也就是要了解内核启动过程。我在研究内核的内存管理的时候,想知道内核启动后的页表的放置,页表的初始化等信息,这促使我这次仔细地研究内核的启动代码。 CPU在bootloader的帮助下将内核载入到了内存中,并开始执行。当然,bootloader必须为zImage做好必要的准备
2013-03-26 14:04:14 1376
转载 linux内核源码源码分析之zImage的出生实录
此文为两年前为好友刘庆敏的书《嵌入式Linux开发详解--基于AT91RM9200和Linux 2.6》中帮忙写的章节的重新整理。如有雷同,纯属必然。经作者同意,将我写的部分重新整理后放入blog中。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2013-03-26 14:03:44 1150
转载 linux源码分析--内核启动之(2)Image内核启动(汇编部分)
分类: LINUX 在完成了zImage自解压之后,就跳转到了解压后的内核(也就是vmlinux的bin版本Image),具体的入口可以在arch/arm/kernel/vmlinux.lds.S(最终的链接脚本是通过这个文件产生的)中获得:......SECTIONS{#ifdef CONFIG_XIP_KERNEL. = XIP_VIRT_ADDR(CON
2013-03-26 14:03:24 809
转载 对于LINUX内核tty设备的一点理解
虽然一直做嵌入式Linux,宿主机和开发板通信天天都在用tty设备通信,但是其实自己对TTY设备及终端的概念认识几乎是0。对于Linux内核的终端、tty、控制台等概念的认识很模糊。由于在学习的时候碰到了重定向console的问题,所以借机学习下tty的知识。以下是我对tty的认识总结,信息来源于网络和内核文档。参考资料见文章末尾。tty一词源于Teletypes,或Teletypewrite
2013-03-26 14:02:50 1655
原创 make -j选项的意义
make -j 1 && make install 一个CPU编译make -j 2 && make install 二个CPU编译
2013-03-26 14:02:11 14554
转载 __init、__initdata和__exit、__exitdata的学习笔记
分类: LINUX由于4年前对于C语言和Linux的知识贫乏,所以当时对于模块中的函数定义没有细看。这次在温习《LDD3》的时候,重新看了一下关于__init、__initdata和__exit、__exitdata的知识,记录如下:对于__init、__initdata和__exit、__exitdata的定义位于,这些宏定义的作用是告诉编译器将这些函数或者数据放入相应的
2013-03-26 14:01:26 704
转载 初涉USB,初学者USB入门总结(5)USB上位机读写开发
上一部分说了固件和驱动的编程,这里再谈一下上位机的程序,因为我开发的范围也就是传传数据,所以太深入的没有去做,不过一般的工程调试应该足够了。 固件的程序和驱动编写好了后,把设备插入就可以正确识别到,接下来的工作就是如何用上位机读写设备了。其实读写操作跟读写串口一致的,就是用file进行操作。关键是打开设备,下面是我用到的程序,这里都贴出来吧,我都是用这个的,供大家参考,呵呵,如果刚开始
2013-03-26 14:00:57 1769
转载 初涉USB,初学者USB入门总结4,USB通讯设备快速开发
经过上述三节的描述,对USB应该已经有了初步的认识,其中具体的协议(比如各个描述符的定义什么的)这里不做描述了,网上一搜一大堆。下面我以一个实例来详细说明快速开发USB设备的步骤,一,设定规划凡事预则立,不预则费,所以开发一个小小的USB也要稍微规划一下,比如想象要实现什么功能,传输的数据协议什么的。二,固件编程,固件编程说白了就是写单片机程序,要实现USB一般可以使用带USB功能
2013-03-26 14:00:20 1587
转载 初涉USB,初学者USB入门总结(3) 数据包阐述
对于USB传输大体有个概念,下一步就来看看到底USB上传的什么东西,以什么格式传数据,先不涉及端点的概念。各种总线的数据传输都是以固定的层次协议进行的,USB当然也不例外。所谓的层次也只是个抽象的概念罢了,就是表达一种依附关系,上层要依赖与底层,上层以底层为基础,上层只需要关心自己的东西就行了,如果你还不明白,那就继续看,学习一个东西不可能一两句话说的明白一个点,需要全面了解后才能清楚各个点。
2013-03-26 13:59:21 753
转载 初涉USB,初学者USB入门总结(2) 设备固件程序
为了更好的说明整个USB启动过程,我们可以用串口实时的跟踪各个USB中断。不过这里先不用串口进行测试,只是简单的用一组变量记录过程。测试程序如下(以下会有程序的说明): uchar test[100];//100长度的变量,记录过程uchar conters=0;//记录计数值,/*-------------------------------------------------
2013-03-26 13:58:24 813
转载 初涉USB,初学者USB入门总结(1)枚举
一,概述现在很多的主控上都带有USB的功能,但是对于初学者来说,这方面应用还是比较棘手,因为usb的不但固件程序需要编写,PC端的驱动也要编写,而且驱动写好了还要写个上位机才能看出效果。这样调试起来十分困难,建议从USB的键盘,鼠标开始做,了解清楚了,再做自己的协议就比较简单了。USB的概念历史啥的这里就不说了。我们先不管具体的数据包格式,这一节先从整个包的层面上简单的说,过程是这样的,
2013-03-26 13:55:51 603
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人