`
bigfirebird
  • 浏览: 125297 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作 ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点(www.gnu.org)上下载有关规范。 一. Linux汇编行结构 任何汇编行都是如下结构: [:] [} @ comment [:] [} @ 注释 Linux ARM 汇编中,任何以冒号结尾的标识符都被认为是一个标号,而不一定非要在一行的开始。 【例1】定义一个"add"的函数,返回 ...
arm-linux-gcc -wall -O2 -c -o $@ $<   -o 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件   -Wall 指定产生全部的警告信息   -O2 编译器对程序提供的编译优化选项,在编译的时候使用该选项,可以使生成的执行文件的执行效率提高   -c 表示只要求编译器进行编译,而不要进行链接,生成以源文件的文件名命名但把其后缀由 .c 或 .cc 变成 .o 的目标文件   -S 只激活预处理和编译,就是指把文件编译成为汇编代码   arm-linux-ld   直接指定代码段,数据段,BSS段的起始地址 -Ttes ...
如果用一句话讲清楚arm-linux-gcc和arm-elf-gcc的区别的话,如何来说呢? arm-linux-gcc是针对arm + linux的开发环境的,kernel使用的是linux,不是uclinux,arm是有硬件MMU的。 而arm-elf-gcc是针对no MMU arm + uclinux的开发环境,kernel使用的是uclinux,硬件是廉价的无MMU的arm芯片。 arm-linux-gcc倒是有点类似X86 PC环境下的linux开发。
lf:executable and linkable format,bin就是binary,elf是一个可执行文件,但是里面的地址需要进行重定向,在基于arm的嵌入式系统中“可能”没有地址重定位的功能,地址必须是事先定位好了的,因此需要从elf文件中生产一个bin文件,这个bin文件中的地址就是固定的了 ,不需要再进行重定位,虽说在bin文件中,对一些地址进行了填0,但是毕竟没有重定位的符号,可能回避elf文件小写,而且肯定比用于调试的elf文件小,在用bootloader将bin文件拷贝到内存后,便从某一个地址开始运行,没有地址重定位的说法了。 那么在用trace32仿真器时,要下载一个e ...
一位大师级的人物写的,不看要后悔的哟!!                              LINUX启动过程 首先,porting linux的时候要规划内存影像,如小弟的系统有64m SDRAM, 地址从0x 0800 0000 -0x0bff ffff,32m flash,地址从0x0c00 0000-0x0dff ffff. 规划如下:bootloader, linux kernel, rootdisk放在flash里。 具体从 0x0c00 0000开始的第一个1M放bootloader, 0x0c10 0000开始的2m放linux kernel,从 0x0c3 ...
[size=large][/size]  USB协议简介 收藏 http://blog.csdn.net/menuconfig/archive/2008/07/29/2729278.aspx USB协议简介     USB是一种协议总线,即主机与设备之间的通信需要遵循一系列约定。协议内容较多,这里仅作一些简单介绍,深入学习,可参看USB规范(WWW.usb.org)。     为了理解协议中的名称,先看图10.32。该图突出了主机上的客户软件和USB逻辑设备(编程涉及的设备)之间的通信流(Communication Flow),该通信流跨越了USB驱动程序USBD、主控制器驱动程序UHCD ...
luckygirl 发表于 2009-7-11 23:43:00 http://blog.csdn.net/menuconfig/archive/2008/10/24/3130403.aspx USB 基本知识(转) USB的重要关键字: 1、端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地 ...
#define 并不是定义变量, 只是用来做文本替换 例如: #define PI 3.1415926 float angel; angel=30*PI/180; 那么,当程序进行编译的时候,编译器会首先将 “#define PI 3.1415926”以后的,所有代码中的“Pi”全部换成 “3.1415926” 然后再进行编译。 我查到一个讲const与#define的差别的帖子,里面谈到const与#define最大的差别在于:前者在堆栈分配了空间,而后者只是把具体数值直接传递到目标变量罢了。或者说,const的常量是一个Run-Time的概念,他在程序中确确实实的存在并可以被调用 ...
二.单项选择题: 1. 下面的网络协议中,面向连接的的协议是: A 。 A 传输控制协议 B 用户数据报协议 C 网际协议 D 网际控制报文协议 2. 在/etc/fstab文件中指定的文件系统加载参数中, D 参数一般用于CD-ROM等移动设备。 A defaults B s ...
linux面试题参考答案 一.填空题: 1. 在Linux系统中,以 文件 方式访问设备 。 2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统。 3. Linux文件系统中每个文件用 i节点 来标识。 4. 全部磁盘块由四个部分组成,分别为引 ...
检查一下主机的NFS服务是否正常工作,可以重启一下nfs服务:sudo /etc/init.d/portmap restart 要是还不行的话,重新安装一遍nfs服务试试 在移植cs89x0后,就一直碰到如下这个问题: nfs: server 192.168.10.1 not responding nfs: server 192.168.10.1 not responding nfs: server 192.168.10.1 OK …… 嵌入式系统要经过很多次很长时间的尝试才能挂上。初步怀疑是NFS配置的问题,后来猜测可能是由于cs8900a丢包严重造成的。 在nfs fa ...
http://blog.sina.com.cn/s/blog_45ef163d0100dx83.html### 远程调试环境由宿主机GDB和目标机调试stub共同构成,两者通过串口或TCP连接。使用 GDB标准程串行协议协同工作,实现对目标机上的系统内核和上层应用的监控和调试功能。调试stub是嵌入式系统中的一段代码,作为宿主机GDB和目标机调试程序间的一个媒介而存在。 就目前而言,嵌入式Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机程序、用KGDB调试系统内核和用gdbserver调试用户空间程序。这三种调试方法的区别主要在于,目 ...
原文地址:http://hi.chibaole.com/blog/2009/12/16/%E5%9C%A8ubuntu%E4%B8%8B%E5%AE%89%E8%A3%85git/ #安装git核心 sudo apt-get install git-core #安装git gui sudo apt-get install git-gui #安装git doc sudo apt-get install git-doc #安装git-svn sudo apt-get install git-svn #安装git-cvs sudo apt-get install git-cvs #安装gitweb ...
今日根据《Mini2440_Linux移植开发实战指南》一文进行nandflash驱动 的移植出现了不少问题。不知道是我操作失误还是该文编写出现错漏导致的。     首先按照步骤修改相关信息之后执行make zImage出现了不少错误:     其中有代表性的错误如下: arch/arm/mach-s3c2440/mach-mini2440.c:189: error: array type has incomplete element type arch/arm/mach-s3c2440/mach-mini2440.c:190: error: array index in non-array i ...
gdb+gdbserver总体介绍 远程调试环境由宿主机GDB和目标机调试stub共同构成,两者通过串口或TCP连接。使用 GDB标准程串行协议协同工作,实现对目标机上的系统内核和上层应用的监控和调试功能。调试stub是嵌入式系统中的一段代码,作为宿主机GDB和目标机调试程序间的一个媒介而存在。 就目前而言,嵌入式Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机程序、用KGDB调试系统内核和用gdbserver调试用户空间程序。这三种调试方法的区别主要在于,目标机远程调试stub 的存在形式的不同,而其设计思路和实现方法则是大致相同的。 ...
Global site tag (gtag.js) - Google Analytics