自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (26)
  • 收藏
  • 关注

原创 一个全是 32 位整数的大数组,除了其中一个数字出现 2 次外,其余数字都出现 3 次。如何找出那个只出现两次的数字?

#include <stdio.h> int a[] = {433,657,9876,42,9876,657,42,433,433,657,42}; int find_twice(int a[], int length) { int ones = 0; // ones记录了出现1次和3次的位 int twos = 0; // twos记录了出现2次和3次的位 int not_three...

2019-07-28 13:23:49 4303

原创 程序减肥,strip,eu-strip 及其符号表

我们公司产品里面的可执行程序和动态共享库(DSO)里面的符号表都被移除了,所以每次遇到core dump的时候,都需要将符号表导入到/usr/lib/debug目录下。一直没弄明白为啥是这个目录,能不能是其他目录,今天没啥事儿,研究了下这个主题。 我们要给我们生成的可执行文件和DSO瘦身,因为这样可以节省更多的磁盘空间,所以我们移除了debug信息,移除了符号表信息,同时我们...

2015-08-28 23:32:36 409

原创 Linux系统网络服务器模型

Linux系统网络服务器模型主要有两种:并发服务器和循环服务器。所谓并发服务器就是在同一个时刻可以处理来自多个客户端的请求;循环服务器是指服务器在同一时刻指可以响应一个客户端的请求。而且对于TCP和UDP套接字,这两种服务器的实现方式也有不同的特点。1、TCP循环服务器:首先TCP服务器接受一个客户端的连接请求,处理连接请求,在完成这个客户端的所有请求后断开连接,然后再接受下一个客...

2012-11-06 11:46:43 213

原创 漫谈linux文件IO

在Linux 开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO。本篇文件打算详细全面,深入浅出。剖析文件IO的细节。从多个角度探索如何提高IO性能。本文尽量用通俗易懂的视角去阐述。不copy内核代码。 阐述之前,要先有个大视角,让我们站在万米高空,鸟瞰我们的文件IO,它们设计是分层的,分层有2个好处,一是架构清晰,二是解...

2012-09-28 10:59:09 171

原创 一个均匀绑定 cpu 的 shell

有时候,由于架构设计或其他业务本身特点原因,导致有些应用是由cpu很不均衡;处理集中在一个cpu是上;白白浪费其他CPU在睡觉。一个简单办法就是绑定到多个CPU;绑定CPU是一个不错技巧,但是不是杀手锏,一般能提高10%性能;更好地办法是优化架构,对于网络处理性程序,绑定网卡中断更犀利。这里分享一个小小的shell,绑定制定程序均匀负载到各个CPU上。#!/bin/shpids=`/...

2012-09-28 10:55:50 250

原创 daemon 进程为什么要fork两次

daemon进程是后台守护进程,有时候也叫精灵进程(agent).linux 下server都是daemon进程。相信大部分开发人员都知道如何去写一个daemon进程。但是另一方面,大部分人不知道为什么要这么做,不少人是从某个地方copy一个函数,拿来主义。但是具体为什么这么实现,却不是很透彻。 见过一些面试官或被面试人。很多人解释daemon进程存在的理由是因为僵死进程。或者...

2012-09-28 10:53:14 200

原创 函数可重入性及编写规范

一、可重入函数1)什么是可重入性?可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。...

2012-09-11 23:48:10 103

转载 gfp_mask含义

gfp_mask标志在alloc_page,kmalloc函数中都有用到。该标志可以分为三类:行为修饰符,区修饰符,类型修饰符。       行为修饰符表示内核应当如何分配所需的内存,在某些特定的情况下,只能使用某些特定的方法分配内存,例如,中断处理程序就要求内核在分配内存时不能睡眠(因为中断处理程序不能被重新调度)。常用标志值有__GPF_WAIT(分配器可以睡眠),__GFP_IO(分

2012-08-29 23:53:11 6134

转载 楼层扔鸡蛋问题

有限层数和蛋数,求即使最坏情况下需要的最少判断次数两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置。可以摔碎两个鸡蛋。(参见两个鸡蛋--一道Google面试题)这是典型的动态规划问题。假设f[n]表示从n层楼找到摔鸡蛋不碎安全位置的最少判断次数。假设第一个鸡蛋第一次从第i层扔下

2012-01-19 22:45:37 2704

原创 动态链接库之延迟绑定探究

动态链接库的优点比较明显,主要集中在节省内存,简化对程序的管理等,对此感兴趣的看官可以去阅读经典的教材 Linker and Loader,国内也有一本经典的教材,俞甲子 石凡 潘爱民编著的程序员的自我修养,讲的也非常好。 延迟绑定PLT,我迷惑过很久,终于让我遇到一篇写的非常棒的博文,这就是 Position Indepentent code in share lib...

2012-01-11 15:33:44 267

原创 LINUX内核经典面试题

1) Linux中主要有哪几种内核锁?2) Linux中的用户模式和内核模式是什么含意?3) 怎样申请大块内核内存?4) 用户进程间通信主要哪几种方式?5) 通过伙伴系统申请内核内存的函数有哪些?6) 通过slab分配器申请内核内存的函数有?7) Linux的内核空间和用户空间是如何划分的(以32位系统为例)?8) vmalloc()申请的内存有什么特点?9) 用户程序使用mallo...

2011-11-14 10:13:32 316

原创 Linux系统优化

主要讲解了优化那些方面,具体的还要自己参透最近很多朋友在群里问谁会系统优化这个问题,这个问题博大精:要熟悉系统环境,软件,及网络协议等。我做运维不久我就依照我的写出优化的经验分享给大家把。可能说的很差劲当然是娱乐就行了。对于系统优化系统是为了提高系统的性能吧,我感觉一个系统做的工作越少并且做到极致,这样对于就能提升性能了。那么你就要考虑你这台服务器是来做什么的是WEB,数据库,缓存,...

2011-10-23 22:51:02 121

原创 加速Linux程序编译

项目越来越大,每次需要重新编译整个项目都是一件很浪费时间的事情。Research了一下,找到以下可以帮助提高速度的方法,总结一下。  tmpfs  有人说在Windows下用了RAMDisk把一个项目编译时间从4.5小时减少到了5分钟,也许这个数字是有点夸张了,不过粗想想,把文件放到内存上做编译应该是比在磁盘上快多了吧,尤其如果编译器需要生成很多临时文件的话。  这个做法...

2011-08-04 21:23:04 253 1

原创 linux系统性能调优第一步——性能分析(vmstat)

性能调优的第一步是性能分析,下面从性能分析着手进行一些介绍,尤其对linux性能分析工具vmstat的用法和实践进行详细介绍。——————————————————————————————————————————1.性能分析的目的1)找出系统性能瓶颈(包括硬件瓶颈和软件瓶颈);2)提供性能优化的方案(升级硬件?改进系统系统结构?);3)达到合理的硬件和软件配置;4)使系统资源使用达到最...

2011-08-04 21:20:42 463

原创 (4)并发服务器设计原理及多进程服务器

(4)并发服务器设计原理及多进程服务器注:所以文章红色字体代表需要特别注意和有问题还未解决的地方,蓝色字体表示需要注意的地方1. 本文所介绍的程序平台开发板:arm9-mini2440虚拟机为:Red Hat Enterprise Linux 5开发板上系统内核版本:linux-2.6.32.22.服务器分类(1)按连接...

2011-07-22 22:59:08 337

转载 C/C++位域(Bit-fields)

前言很早想说说这个问题了,经常也会有很多公司拿位域出来考人,呵呵要真的想弄清楚还要一点点的分析。这里先看看网宿的一道笔试题目://假设硬件平台是intel x86(little endian) typedef unsigned int uint32_t; void inet_ntoa(uint32_t in) { char b[18];

2011-07-01 13:50:00 2158

转载 linux下fork的运行机制详细解析

<br /><br />要求如下:<br />已知从这个程序执行到这个程序的所有进程结束这个时间段内,没有其它新进程执行。<br />      1、请说出执行这个程序后,将一共运行几个进程。<br />      2、如果其中一个进程的输出结果是“pid1:1001, pid2:1002”,写出其他进程的输出结果(不考虑进程执行顺序)。<br />      明显这道题的目的是考察linux下fork的执行机制。下面我们通过分析这个题目,谈谈linux下fork的运行机制。 <br />预备知识<br /

2011-05-31 16:04:00 2217

转载 精简LINUX内核配置及快速编译的方法收集

<br />如果经常编译新内核(不管是什么目的),或者需要修改内核的某些代码做测试,虽然make会选择的编译有必要重新编译的部分,但是如果修改了某个核心的头文件。可能需要重新编译很多内容,所以把不需要使用的模块不编译是能节省不少时间的。<br />编译内核大部分时间都在编译模块上,比如我的机器:<br />find /lib/modules/2.6.37-rc5+/ -name “*.ko”|wc -l<br />2374<br />我的目标就是删除这些不用的模块, 不是显示的删除不用的模块,而是提取出需要

2011-05-31 12:05:00 3963

转载 【linux内核装载elf过程简介】

<br />    首先再用户层面,bash进程会调用fork函数创建一个新的进程,然后新的进程调用execve系统调用执行指定的elf文件,原先bash进程继续返回等待刚才启动的新进程结束。然后等待用户输入命令。<br />    int execve(const char *filename,char *const argv[],char *const envp[]);<br />    分别是被执行的程序文件名,执行参数和环境变量。<br />    glibc对execve进行了包装,提供了exec

2011-05-26 10:20:00 2271

转载 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字

<br />题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n) ,空间复杂度是O(1) 。<br />分析:这是一道很新颖的关于位运算的面试题。<br />首先我们考虑这个问题的一个简单版本:一个数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。<br />这个题目的突破口在哪里?题目为什么要强调有一个数字出现一次,其他的出现两次?我们想到了异或运算的性质:任何一个数字异或它自己都等于0 。也就是说,如果

2011-05-24 17:56:00 2154

转载 LLVM/GCC中如何使用Intel格式的汇编

<br />在GCC以及LLVM编译器中,默认情况下,如果使用汇编或在C/C++,Objective C/C++中内嵌汇编的话都是AT&T格式。<br />尽管本人接触GCC已经很久了,但对于AT&T汇编还是不忒习惯,尤其是写SSE的时候很别扭,呵呵。因此如果能写Intel格式汇编的话就会非常舒服。下面提供此方法——(注:此方法已经在Apple LLVM1.6编译器下成功通过)<br />int main(int argc, const char * argv[]){ __asm__ vola

2011-05-16 00:19:00 2592

原创 Linux环境下两种汇编风格的切换(AT&T,Intel)

<br />The following i386/x86-64 specific disassembler options are supported for use<br />with the -M switch (multiple options should be separated by commas):<br />下面是针对于i386/x86-64中具体的反汇编格式的选择,使用-M来选择。多个参数使用逗号隔开。<br /><br />i386/x86-64-M<br /> x86-64 Disas

2011-05-16 00:11:00 2121

转载 Linux Unicode 编程--C语言如何使用/生成UTF-8编码格式的文件

http://www.ibm.com/developerworks/cn/linux/i18n/unicode/linuni/

2011-03-30 21:40:00 5202

转载 dd命令的用法

<br />一.dd命令<br />1.我们先在终端输入命令: man dd,看以下官方的解释:<br />NAME<br />       dd - convert and copy a file<br />SYNOPSIS<br />       dd [OPERAND]...<br />       dd OPTION<br />DESCRIPTION<br />       Copy a file, converting and formatting according to the operand

2011-03-12 19:47:00 1774

转载 内核同步机制-优化屏障和内存屏障

优化屏障 <br />编译器编译源代码时,会将源代码进行优化,将源代码的指令进行重排序,以适合于CPU的并行执行。然而,内核同步必须避免指令重新排序,优化屏障(Optimization barrier)避免编译器的重排序优化操作,保证编译程序时在优化屏障之前的指令不会在优化屏障之后执行。<br />Linux用宏barrier实现优化屏障,gcc编译器的优化屏障宏定义列出如下(在include/linux/compiler-gcc.h中): <br />#define barrier() __asm__ _

2011-02-26 23:06:00 2642

转载 __asm__ __volatile__内嵌汇编用法简述

<br />__asm__ __volatile__内嵌汇编用法简述 在阅读C/C++原码时经常会遇到内联汇编的情况,下面简要介绍下__asm__ __volatile__内嵌汇编用法。因为我们华清远见教学平台是ARM体系结构的,所以下面的示例都是用ARM汇编。 <br />带有C/C++表达式的内联汇编格式为: <br />__asm__ __volatile__("Instruction List" : Output : Input : Clobber/Modify); <br />其中每项的概念及功能

2011-01-19 23:19:00 1136

转载 内存屏障

<br />当你看到“内存屏障”四个字的时候,你的第一反应是什么?寄存器里取出了错误的值?ifence,sfence之类的指令?还是诸如volatile之类的关键字?好吧,我第一次看到这四个字的时候,脑子里浮现出的是魔兽争霸里绿油油的铺满苔藓的岩石屏障- -#,并且,当我搞明白内存屏障具体是什么,而且自认为对其很熟悉之后,我的第一反应依然是那几块绿油油的石头,而且很想上去A一把!<br />言归正传,先解释下什么是内存屏障。内存屏障是指“由于编译器的优化和缓存的使用,导致对内存的写入操作不能及时的反应出来,

2011-01-14 17:29:00 1321

原创 Makefile 里的 subst 函数

<br />Linux中subst是字符串处理函数。 <br />Makefile里的subst<br />  用法是$(subst FROM,TO,TEXT),即将TEXT中的东西从FROM变为TO <br />Makefile中的字符串处理函数<br />  格式: <br />  $(subst <from>;,<to>;,<text>;) <br />  名称:字符串替换函数——subst。 <br />  功能:把字串<text>;中的<from>;字符串替换成<to>;。 <br />  返回:

2010-12-20 19:14:00 36364 2

转载 dd与cp的区别

<br />问:<br />看了一些关于dd和cp的命令,但是我始终无法明白dd和cp之间有什么不同?<br />不是都可以看成是备份的作用么?还有什么区别呢?<br />答:<br />1、dd是对块进行操作的,cp是对文件操作的。<br />2、比如有兩塊硬盤,要將第一個硬盤裏的數據複製到第二個硬盤上<br /><br />dd if=/dev/hda of=/dev/hdc bs=4 count=1024<br />bs每次複製的塊大小<br />count要複製的次數<br /><br />這樣第二

2010-12-20 18:52:00 21497 3

原创 NOP 指令作用

nop 指令作用:1,通过 nop 指令的填充(nop指令长度从一个字节到九个字节,用于对齐),使指令对齐,从而减少取指令时的内存访问次数。一般用来内存地址偶数对齐,比如有一条指令占 3 字节,这时使用 nop 指令,CPU就可以从第四个字节处读取指令。

2010-12-12 19:12:00 67464 7

原创 主机ping不通虚拟机,关于vmnet1,vmnet8

    很久没玩虚拟机了,最近忙着看汇编,今日在看到一帖,关于const的,问题蛮有意思,我想把问题代码反汇编一下,因用到了动态数组,无奈在windows下没有支持GCC扩展语法的编译工具,只好用secureCRT登到VMware里的centOS中(不喜欢用Cygwin),问题这就来了。    前段时间更新虚拟机里的centOS的rpm包要上网,就把VMware的host-only改成了万恶的NAT,当时方便了,现在麻烦来了。因改成NAT后原来centOS的静态ip没了,今天重配置了ip,然后杯具了。。。。

2010-06-17 21:49:00 19869 2

转载 关于汇编语言寄存器和指令操作的整理

<br />最近汇编学到后面的内容, 越来越觉得前面的基础没有掌握好, 弄得最后编写汇编程序的时候, 寄存器瞎用, 没有一点的规矩, 中断操作也不知道是对哪个寄存器里的数进行操作, 每次做一个小程序, 都得翻书后面的INT中断查询表, 感觉很不爽, 今天花了大半天把几本关于汇编的书前面的内容又翻了一遍, 结合自己做的笔记, 做了一个简单的整理, 关于寄存器和指令的, 以作复习汇编之用. 关于存哪个数据用哪个寄存器, 我觉得首先要弄清楚各个寄存器的用途, 以及指令是如何操作数据, 操作的哪个寄存器里的数据,

2010-06-03 01:00:00 1346

转载 8个实用而有趣Bash命令提示行

很多人都对过命令行提示的重要性不屑一顾,甚至是一点都不关心。但是我却一点都不这么认为,一个好的命令行提示可以改变你使用命令的方式。为此,我在internet上找到一些非常实用,优秀,并有趣的bash的命令行提示。下面我将我最喜欢使用的一些命令行提示罗列如下。注意  -  要使用下面这些提示,你可以拷贝粘贴这些以”PS1″打头的内容到你的终端上,为了使你的改变永久生效,还要将这些内容粘贴到你使用

2010-05-05 13:39:00 766

转载 nasm 中文手册

Nasm中文手册 --------------------------------------------------------------------------------第一章: 简介----------------------- 1.1 什么是NASM NASM是一个为可移植性与模块化而设计的一个80x86的汇编器。它支持相当多

2010-04-05 18:35:00 4119

原创 用vmare虚拟机,虚拟linux下串口对联

这个方法在同一台电脑上使用两个vmare机虚拟linux,(在同一个vmare机上也可以建立两个串口对联,见文章末尾),建立一对虚拟串口,并虚拟串口联通,搭建出两机的串口通讯通路。适用于在没有串口硬件设备的情况下,调试串口通讯程序。(1) 确保安装了linux的vmare虚拟机的串口没被其他的程序占用。具体在fedora linux 6.0里面,串口可能被xen服务占用。最简单的解除方

2010-04-05 10:35:00 1769

转载 大小端模式(关于Big-Endian 和Little-Endian)

所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;  所谓的小端模式,是指数据的低位保存在内存的低地址中,而数 据的高位保存在内存的高地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻

2010-03-17 16:52:00 1900

MySQL 8 Cookbook 中文版.pdf

MySQL 8.0 的发布是MySQL 发展历史上的一个重要里程碑,也是开源数据库领域内的一个大事件。针对这个版本,MySQL 官方团队做了太多的工作,从查询优化到集群架构,从参数调整到特性支持,MySQL 都有了革命性的变化。《MySQL 8 Cookbook(中文版)》基于MySQL 8.0,以基础知识为入手点,以讲解技术特性为目标,以案例作为理论的补充,详细介绍了MySQL 的方方面面,提供了超过150 个高性能数据库查询与管理技巧,是MySQL 入门者和管理者的必读之作。

2019-07-28

嵌入式linux应用程序开发标准教程(第2版)

华清远见 嵌入式linux应用程序开发标准教程(第2版)

2011-02-17

嵌入式Linux系统移植步步通

目 录 第一部分 前言...................................................................................................................................8 1 硬件环境.....................................................................................................................................8 1.1主机硬件环境.......................................................................................................................8 1.2 目标板硬件环境...................................................................................................................8 1.3工具介绍...............................................................................................................................8 2软件环境......................................................................................................................................8 2.1主机软件环境.......................................................................................................................8 2.1.1 Windows 操作系统.......................................................................................................8 2.1.2 Linux操作系统 .......................................................................................................8 2.1.3 目标板最后运行的环境...............................................................................................9 2.2 Linux下工作用户及环境....................................................................................................9 2.2.1 交叉工具的安装...........................................................................................................9 2.2.2 uboot 移植工作目录....................................................................................................9 2.2.3 内核及应用程序移植工作...........................................................................................9 2.3 配置系统服务.....................................................................................................................10 2.3.1 tftp服务器的配置.......................................................................................................10 2.4 工具使用.............................................................................................................................12 2.4.1 minicom的使用..........................................................................................................12 3 作者介绍...................................................................................................................................13 3.1 策划, 组织, 指导, 发布者...................................................................................................13 3.2 ADS bootloader部分..........................................................................................................13 3.3 交叉工具部分.....................................................................................................................13 3.4 uboot部分...........................................................................................................................13 3.5 内核部分.............................................................................................................................13 3.6 应用程序部分.....................................................................................................................13 3.7 网卡驱动部分.....................................................................................................................13 3.8 Nand Flash 驱动部分.........................................................................................................13 第二部分 系统启动bootloader的编写(ADS).................................................................................14 1 工具介绍...................................................................................................................................14 1.1 ADS 命令行命令介绍........................................................................................................14 1.1.1 armasm........................................................................................................................14 1.1.2 armcc, armcpp.............................................................................................................14 1.1.3 armlink........................................................................................................................14 2 基本原理...................................................................................................................................15 2.1 可执行文件组成及内存映射.............................................................................................15 2.1.1 可执行文件的组成.....................................................................................................15 2.1.2 装载过程.....................................................................................................................16 2.1.3 启动过程的汇编部分.................................................................................................17 2.1.4 启动过程的C部分.....................................................................................................17 3 AXD的使用以及源代码说明...................................................................................................18 3.1 源代码说明.........................................................................................................................18 3.1.1 汇编源代码说明.........................................................................................................18 3.1.2 C语言源代码说明......................................................................................................23 3.1.3 源代码下载.................................................................................................................23 3.2 AXD的使用.......................................................................................................................23 3.2.1 配置仿真器.................................................................................................................23 3.2.2 启动AXD 配置开发板...............................................................................................23 第三部分 GNU交叉工具链.............................................................................................................25 1 设置环境变量,准备源码及相关补丁...................................................................................25 1.1 设置环境变量.....................................................................................................................25 1. 2 准备源码包............................................................................................................................25 1.2.1 binuils.........................................................................................................................25 1.2.2 gcc..............................................................................................................................25 1.2.3 glibc............................................................................................................................25 1.2.4 linux kernel..................................................................................................................26 1.3 准备补丁.............................................................................................................................26 1.3.1 ioperm.c.diff................................................................................................................26 1.3.2 flow.c.diff....................................................................................................................26 1.3.3 tlinux. diff....................................................................................................................26 1.4 编译 GNU binutils...........................................................................................................26 1.5 准备内核头文件.................................................................................................................26 1.5.1 使用当前平台的gcc编译内核头文件......................................................................26 1.5.2 复制内核头文件.........................................................................................................27 1.6 译编glibc头文件.............................................................................................................27 1.7 编译gcc第一阶段............................................................................................................27 1.8 编译完整的glibc..............................................................................................................27 1.9 编译完整的gcc.................................................................................................................28 2 GNU交叉工具链的下载...........................................................................................................28 2.1 ARM官方网站...................................................................................................................28 2.2 本文档提供的下载.............................................................................................................28 3 GNU交叉工具链的介绍与使用...............................................................................................29 3.1 常用工具介绍.....................................................................................................................29 3.2.1 armlinuxgcc 的使用.................................................................................................29 3.2.2 armlinuxar 和 armlinuxranlib 的使用..................................................................30 3.2.3 armlinuxobjdump 的使用.........................................................................................30 3.2.4 armlinuxreadelf 的使用............................................................................................31 3.2.6 armlinuxcopydump 的使用......................................................................................32 4 ARM GNU常用汇编语言介绍.................................................................................................32 4.1 ARM GNU常用汇编伪指令介绍.....................................................................................32 4.2 ARM GNU专有符号.........................................................................................................33 4.3 操作码................................................................................................................................33 5 可执行生成说明........................................................................................................................33 5.1 lds文件说明.......................................................................................................................33 5.1.1 主要符号说明.............................................................................................................33 5.1.2 段定义说明.................................................................................................................34 第四部分 uboot 的移植...................................................................................................................35 1 uboot 的介绍及系统结构.........................................................................................................35 1.1 uboot 介绍.........................................................................................................................35 1.2 获取uboot......................................................................................................................... 35 1.3 uboot 体系结构.................................................................................................................35 1.3.1 uboot 目录结构..........................................................................................................35 2 uboot的启动过程及工作原理...................................................................................................36 2.1 启动模式介绍.....................................................................................................................36 2.2 阶段1介绍.........................................................................................................................36 2.2.1 定义入口.....................................................................................................................36 2.2.2 设置异常向量.............................................................................................................37 2.2.3 设置CPU的模式为SVC模式..................................................................................37 2.2.4 关闭看门狗.................................................................................................................37 2.2.5 禁掉所有中断.............................................................................................................37 2.2.6 设置以CPU的频率....................................................................................................37 2.2.7 设置CP15...................................................................................................................37 2.2.8 配置内存区控制寄存器.............................................................................................38 2.2.9 安装UBOOT 使的栈空间........................................................................................38 2.2.10 BSS段清0................................................................................................................38 2.2.11 搬移Nand Flash代码...............................................................................................39 2.2.12 进入C代码部分.......................................................................................................39 2.3 阶段2的C语言代码部分 .............................................................................................39 2.3.1调用一系列的初始化函数.........................................................................................39 2.3.2 初始化网络设备.........................................................................................................41 2.3.3 进入主UBOOT命令行..............................................................................................41 2.4 代码搬运.............................................................................................................................41 3 uboot的移植过程.......................................................................................................................42 3.1 环境....................................................................................................................................42 3.2 步骤....................................................................................................................................42 3.2.1 修改Makefile..............................................................................................................42 3.2.2 在board子目录中建立crane2410.............................................................................42 3.2.3 在include/configs/中建立配置头文件......................................................................42 3.2.4 指定交叉编译工具的路径.........................................................................................42 3.2.5 测试编译能否成功.....................................................................................................42 3.2.6 修改lowlevel_init.S文件...........................................................................................43 3.2.9 UBOOT的Nand Flash移植......................................................................................45 3.2.8重新编译uboot.......................................................................................................... 45 3.2.9 把uboot 烧入flash....................................................................................................45 4 UBOOT 命令的使用................................................................................................................46 4.1 UBOOT 命令的介绍.........................................................................................................46 4.1.1 获得帮助信息.............................................................................................................46 4.2 常用命令使用说明.............................................................................................................47 4.2.1 askenv(F).....................................................................................................................47 4.2.2 autoscr........................................................................................................................47 4.2.3 base ...........................................................................................................................47 4.2.4 bdinfo..........................................................................................................................47 4.2.5 bootp...........................................................................................................................47 4.2.8 tftp(tftpboot)................................................................................................................48 4.2.9 bootm..........................................................................................................................48 4.2.10 go..............................................................................................................................48 4.2.11 cmp .........................................................................................................................48 4.2.12 coninfo .....................................................................................................................48 4.2.13 cp..............................................................................................................................48 4.2.14 date...........................................................................................................................49 4.2.15 erase(F)......................................................................................................................49 4.2.16 flinfo(F).....................................................................................................................49 4.2.17 iminfo........................................................................................................................49 4.2.18 loadb..........................................................................................................................49 4.2.19 md.............................................................................................................................49 4.2.20 mm ............................................................................................................................50 4.2.21 mtest .......................................................................................................................50 4.2.22 mw.............................................................................................................................50 4.2.23 nm ...........................................................................................................................50 4.2.24 printenv......................................................................................................................50 4.2.25 ping ..........................................................................................................................51 4.2.26 reset..........................................................................................................................51 4.2.27 run ...........................................................................................................................51 4.2.28 saveenv(F).................................................................................................................51 4.2.29 setenv.........................................................................................................................51 4.2.30 sleep..........................................................................................................................51 4.2.31 version.......................................................................................................................51 4.2.32 nand info....................................................................................................................51 4.2.33 nand device <n>........................................................................................................51 4.2.34 nand bad....................................................................................................................51 4.2.35 nand read...................................................................................................................52 4.2.36 nand erease................................................................................................................52 4.2.37 nand write..................................................................................................................52 4.3 命令简写说明.....................................................................................................................52 4.4 把文件写入NandFlash.......................................................................................................53 4.5 下载提供.............................................................................................................................53 5 参考资料...................................................................................................................................53 第五部分 linux 2.6内核的移植.......................................................................................................53 1 内核移植过程............................................................................................................................53 1.1 下载linux内核...................................................................................................................53 1.2 修改Makefile.....................................................................................................................53 1.3 设置flash分区...................................................................................................................54 1.3.1指明分区信息.............................................................................................................54 1.3.2 指定启动时初始化.....................................................................................................56 1.3.3 禁止Flash ECC校验 ................................................................................................56 1.4 配置内核.............................................................................................................................56 1.4.1 支持启动时挂载devfs................................................................................................56 1.4.2配置内核产生.config文件.........................................................................................57 1.4.3编译内核.....................................................................................................................58 1.4.4 下载zImage到开发板................................................................................................58 2 创建uImage...............................................................................................................................61 2.1 相关技术背景介绍.............................................................................................................61 2.2 在内核中创建uImage的方法...........................................................................................61 2.2.1 获取mkimage工具.....................................................................................................61 2.2.2 修改内核的Makefile文件.........................................................................................61 3追加实验记录.............................................................................................................................62 3.1移植linux2.6.15.7.............................................................................................................. 62 3.2移植linux2.6.16.21............................................................................................................ 62 3.3 移植linux2.6.17................................................................................................................ 62 4 参考资料...................................................................................................................................62 第六部分 应用程序的移植..............................................................................................................63 1构造目标板的根目录及文件系统.............................................................................................63 1.1 建立一个目标板的空根目录.............................................................................................63 1.2 在my_rootfs中建立Linux目录树...................................................................................63 1.3 创建linuxrc文件................................................................................................................63 2 移植Busybox............................................................................................................................64 2.1 下载busybox......................................................................................................................64 2.3 编译并安装Busybox..........................................................................................................65 3 移植TinyLogin..........................................................................................................................66 3.1 下载....................................................................................................................................66 3.2 修改tinyLogin的Makefile................................................................................................66 3.3 编译并安装.........................................................................................................................66 4 相关配置文件的创建................................................................................................................66 4.1 创建帐号及密码文件.........................................................................................................66 4.2 创建profile文件................................................................................................................67 4.4 创建fstab文件...................................................................................................................67 4.5 创建inetd.conf配置文件...................................................................................................67 5 移植inetd...................................................................................................................................67 5.1 inetd的选择及获取............................................................................................................67 5.1.1 获取inetd....................................................................................................................67 5.2 编译inetd...........................................................................................................................67 5.2.1 修改configure文件....................................................................................................67 5.2.2 编译 ...........................................................................................................................68 5.3 配置inetd...........................................................................................................................68 5.3.1 拷贝inetd到根文件系统的usr/sbin目录中.............................................................68 6 移植thttpd Web服务器.............................................................................................................69 6.1 下载....................................................................................................................................69 6.2 编译thttpd..........................................................................................................................69 6.3 配置....................................................................................................................................69 6.3.1 拷贝thttpd二进制可执行文件到根文件系统/usr/sbin/目录中...............................69 6.3.2 修改thttpd配置文件..................................................................................................69 6.3.3 转移到根文件系统目录,创建相应的文件.............................................................69 7 建立根目录文件系统包............................................................................................................70 7.1 建立CRAMFS包...............................................................................................................70 7.1.1 下载cramfs工具........................................................................................................70 7.1.2 制作cramfs包............................................................................................................70 7.1.3 写cramfs包到Nand Flash.........................................................................................70 8 参考资料...................................................................................................................................70 第七部分 Nand flash驱动的编写与移植........................................................................................71 1 Nand flash工作原理..................................................................................................................71 1.1 Nand flash芯片工作原理..................................................................................................71 1.1.1 芯片内部存储布局及存储操作特点.........................................................................71 1.1.2 重要芯片引脚功能.....................................................................................................71 1.1.3 寻址方式.....................................................................................................................71 1.1.4 Nand flash主要内设命令详细介绍...........................................................................72 1.2 Nand Flash 控制器工作原理.............................................................................................72 1.2.1 Nand Flash控制器特性..............................................................................................72 1.2.2 Nand Flash控制器工作原理......................................................................................72 1.3 Nand flash 控制器中特殊功能寄存器详细介绍 ............................................................72 1.4 Nand Flash 控制器中的硬件ECC介绍............................................................................73 1.4.1 ECC产生方法............................................................................................................73 1.4.2 ECC生成器工作过程................................................................................................74 1.4.3 ECC的运用................................................................................................................74 2 在ADS下flash烧写程序.........................................................................................................74 2.1 ADS下flash烧写程序原理及结构...................................................................................74 2.2 第三层实现说明.................................................................................................................74 2.1.1 特殊功能寄存器定义.................................................................................................74 2.1.2 操作的函数实现.........................................................................................................74 2.3 第二层实现说明.................................................................................................................75 2.3.1 Nand Flash 初始化......................................................................................................75 2.3.3 获取Nand flash ID......................................................................................................75 2.3.4 Nand flash写入...........................................................................................................76 2.3.5 Nand flash读取...........................................................................................................77 2.3.6 Nand flash标记坏块...................................................................................................78 2.3.7 Nand Flash检查坏块..................................................................................................79 2.3.8 擦除指定块中数据.....................................................................................................79 2.4 第一层的实现....................................................................................................................80 3 在UBOOT 对Nand Flash的支持............................................................................................82 3.1 UBOOT 对从Nand Flash启动的支持.............................................................................82 3.1.1 从Nand Flash启动UBOOT 的基本原理................................................................82 3.1.2 支持Nand Flash启动代码说明.................................................................................82 3.2 UBOOT 对Nand Flash命令的支持.................................................................................84 3.2.1 主要数据结构介绍.....................................................................................................84 3.2.2 支持的命令函数说明.................................................................................................85 4 在Linux对Nand Flash的支持.................................................................................................87 4.1 Linux下Nand Flash调用关系..........................................................................................87 4.1.1 Nand Flash设备添加时数据结构包含关系..............................................................87 4.1.2 Nand Flash设备注册时数据结构包含关系..............................................................87 4.2 Linux下Nand Flash驱动主要数据结构说明..................................................................88 4.2.1 s3c2410专有数据结构...............................................................................................88 4.2.2 Linux 通用数据结构说明..........................................................................................89 4.3.1 注册driver_register....................................................................................................94 4.3.2 探测设备probe...........................................................................................................94 4.3.3 初始化Nand Flash控制器.........................................................................................94 4.3.4 移除设备.....................................................................................................................94 4.3.5 Nand Flash芯片初始化..............................................................................................94 4.3.6 读Nand Flash............................................................................................................95 4.3.7 写Nand Flash.............................................................................................................95 第八部分 Cs8900a网卡驱动的编写与移植...................................................................................95 1 Cs8900a工作原理......................................................................................................................95 2 在ADS下cs8900a的实现........................................................................................................95 2.1 在cs8900a下实现的ping 工具.........................................................................................95 3 在uboot 下cs8900a的支持......................................................................................................96 3.1 uboot 下cs8900a的驱动介绍...........................................................................................96 3.2 uboot 下cs8900a的移植说明...........................................................................................96 4 在linux下cs8900a驱动的编写与移植....................................................................................96 4.1 Linux下cs8900a的驱动说明............................................................................................96 4.2 Linux 下cs8900a的移植说明...........................................................................................96 4.2.1 为cs8900a建立编译菜单..........................................................................................96 4.2.2 修改S3C2410相关信息............................................................................................97 序 该文档的目的是总结我们在工作中的一些经验,并把它们分享给喜欢ARM和Linux的朋友, 如有错误 之处,请大家多多指点. 同样, 我们也希望更多人能把自己的工作经验和体会加入该文档,让大家共同进步. 该文档是一份交流性文档, 只供个人学习与交流,不允许公司和企业用于商业行为.

2011-02-17

J-LINK仿真用户手册

J-LINK仿真用户手册,语言文字:汉语。里面对J-LINK的应用进行了详细的介绍,并配备了大量的插图实例

2011-02-17

天祥ARM7S3C44B0原理图 TX-3A核心板原理图 TX-3C底板原理图

天祥ARM7 S3C44B0原理图 TX-3A核心板原理图 TX-3C底板原理图

2011-02-17

天祥TX-3C开发板使用手册

ARM7提高级开发板配套程序清单(全部提供源代码): 1.适合本开发板的bootloader程序 (1)u-boot-1.1.1 2.linux2.4内核驱动程序 (1)LED (2)Linux中断 (3)UART全串行口控制台 (4)RTC(实时时钟) (5)片内A/D采集LM35 (6)PS2键盘和鼠标 (7)RTL8019A (8)IDE硬盘 (9)USB主功能 (10)USB从功能 3.Linux2.6内核驱动程序 (1)LED (2)Linux中断 (3)UART全串行口控制台 (4)RTC(实时时钟) (5)片内A/D采集LM35 (6)PS2键盘和鼠标 (7)RTL8019A (8)IDE硬盘 (9)CH375 4.uC/OS-II (RTOS)驱动程序 (1)UART串行口控制台 (2)中断 (3)LED (4)彩色触摸屏控制 (5)RTC(实时时钟) (6)片内A/D采集LM35 (7)PS2键盘鼠标 (8)RTL8019A (9)IDE硬盘 (10)CH375 5.裸板实验程序(串行口控制台下的开发板测试程序) (1)内存 SDRAM读写自测试 (2)板上简单led测试 (3)PDIUSBD12 实验 (4)SD CARD实验 (5)音频接口实验 (6)USBhost实验 (7)LCD和触摸屏测试 (8)IDE硬盘读/写接口实验 (9)PS/2 键盘与鼠标实验 (10)独立按键实验 (11)外部中断4567测试 (12)A/D温度采集显示实验 (13)Nand Flash 读/写实验 (14)RTC时钟读/写实验 (15)Slow模式测试 (16)Hold模式测试 (17)看门狗测试

2011-02-17

计算机组成原理(唐朔飞).pdf

计算机组成原理.。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2010-03-13

8088单片机交通灯论文

8088单片机交通灯论文..................................

2009-12-10

《Oracle9i&10g编程艺术》完整英文版PDF(apress.expert.oracle.database.architecture.9i.and.10g.programming.techniques.and.solutions.sep.2005.)

知道这本书的不用我多说了吧,TOM大师继《ORACLE EXPERT ONE ON ONE》后又一力作

2009-10-12

ARM结构体系(811页).rar

学习嵌入式必看,详细无比。。。。。。。。。。。。。。。。。。。。。。

2009-10-02

Android剖析和机理.rar

如题。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2009-10-02

ADS1.2中文教程.pdf

如题。。。。。。。。。。。。。。。。。。。。。。

2009-10-02

Linux命令大全(修改版).chm

如题。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2009-10-02

无UBOOT引导LINUX.rar

如题。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2009-10-02

ctags-5.8.tar.gz

这是09年最新的ctags源码包,下载了以后直接tar解压安装就行了

2009-10-02

uCOS-II中文注释版.rar

uCOS-II中文注释版.rar 就是邵贝贝译的那个

2009-10-02

硬件工程师必读攻略(pdf).rar

硬件工程师必读攻略(pdf).rar,讲解电子工程师的必备技能

2009-09-28

做合格的电子工程师.pdf

做合格的电子工程师.pdf。。。。。。。。。。。。。。。。。。。讲解电子工程师的必备技能

2009-09-28

C语言函数速查手册.chm

c函数速查手册,程序员必备,方便好用,奉献给大家。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2009-09-28

Linux 0.01内核分析与操作系统设计.part2.rar

此书很难下载,我好不容易才下载到的,分享给大家; 希望对各位有所帮助 PS:这是第二部分,我的资源里还有第一部分

2009-09-26

\Linux 0.01内核分析与操作系统设计配书光盘.rar

和我的资源里的书《Linux 0.01内核分析与操作系统设计》是配套的。 Linux 0.01内核分析与操作系统设计配书光盘.rar

2009-09-26

Linux 0.01内核分析与操作系统设计.part1.rar

这本书很难下,迅雷上基本都是假的,要么就没有资源; 我好不容易才下载到,分享给大家,希望对大家有所帮助;本书还有附书光盘,我的资源里也有,可以一起下载。

2009-09-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除