
ARM
chenbang110
学习是最快乐的事
展开
-
gdbserver: linux-x86-low.c error: sys/reg.h: No such file or directory
ubuntu11.10编译gdbserver时出现了linux-x86-low.c error: sys/reg.h: No such file or directory情况,解决方法如下:1. 找到config.h里的HAVE_SYS_REG_H这个宏定义,把它注释掉.2. 在linux-x86-low.c的头文件#include注释掉.3. 交叉编译器要指明具体路径4. 重新m原创 2012-04-25 20:30:27 · 6283 阅读 · 0 评论 -
uboot的两个stage
大多数bootloader都分为stage1和stage2两部分,u-boot也不例外。依赖于CPU体系结构的代码(如设备初始化代码等)通常都放在stage1且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。1、Stage1 start.S代码结构 u-boot的stage1代码通常放在start.S文件中,他用汇转载 2012-07-30 20:24:31 · 1181 阅读 · 0 评论 -
uboot.lds分段的分析
gcc等编译器内置有缺省的连接脚本。如果采用缺省脚本,则生成的目标代码需要操作系统才能加载运行。为了能在嵌入式系统上直接运行,需要编写自己的连接脚本文件。编写连接脚本,首先要对目标文件的格式有一定了解。GNU编译器生成的目标文件缺省为elf格式。elf文件由若干段(section)组成,如不特殊指明,由C源程序生成的目标代码中包含如下段:.text(正文段)包含程序的指令代码;.data(数据段)转载 2012-07-30 22:10:02 · 957 阅读 · 0 评论 -
让Linux的启动信息从LCD和串口同时输出
要想让Linux的启动信息从LCD和串口同时输出,作如下设置.修改bootloader中的启动参数信息。setenv bootargs root=/dev/nfs nfsroot=172.16.3.206:/home/cb/Desktop/MyProject/root_fs ip=172.16.3.40:172.16.3.206:172.16.3.1:255.255.255.0::et原创 2012-08-15 17:19:33 · 8438 阅读 · 0 评论 -
ARM开发常用的22个概念
1.ARM中一些常见英文缩写解释MSB:最高有效位;LSB:最低有效位;AHB:先进的高性能总线;VPB:连接片内外设功能的VLSI外设总线;EMC:外部存储器控制器;MAM:存储器加速模块;VIC:向量中断控制器;SPI:全双工串行接口;CAN:控制器局域网,一种串行通讯协议;PWM:脉宽调制器;ETM:嵌入式跟踪宏;CPSR:当前程序状态寄存器;转载 2012-08-01 09:53:09 · 748 阅读 · 0 评论 -
...arch/arm: Is a directory. Stop." 的错误解决
今天在make s3c2410_defconfig时出现了:arch/arm: Is a directory. Stop.错误...查找半天, 原来是Makefile中ARCH=arm这一句后面多了两个空格变成ARCH=arm__所以就不识了...果断去断空格,就OK了.原创 2012-07-31 12:15:39 · 2856 阅读 · 1 评论 -
如何成为嵌入式Linux系统工程师
转载 2012-12-04 14:26:15 · 717 阅读 · 0 评论 -
uboot: nboot命令
nboot InAddr dev FlAddrInAddr原创 2013-01-29 21:23:55 · 1204 阅读 · 0 评论 -
禁止nfs开启
nfs平时还是用得比较少,所以一般不要开机启动。查看一下nfs进程是否已经开启:$ ps aux | grep nfsroot 501 0.0 0.0 0 0 ? Sroot 1214 0.0 0.0 0 0 ? Sroot 1215 0.0 0.0 0原创 2013-01-22 11:11:18 · 1525 阅读 · 0 评论 -
uboot 与系统内核中 MTD分区的关系
uboot 与系统内核中 MTD分区的关系:分区只是内核的概念,就是说A~B地址放内核,C~D地址放文件系统,等等。1:在内核MTD中可以定义分区A~B,C~D。。。。。。并且以绝对的地址赋上值。bootloader中只要能将内核下载到A~B区的A地址开始处就可以,C~D区的C起始地址下载文件系统。。。这些起始地址在MTD的分区信息中能找到。bootloader对分区的转载 2012-11-19 08:16:40 · 699 阅读 · 0 评论 -
BSS段、数据段、代码段、堆与栈
http://www.embeddedlinux.org.cn/html/xinshourumen/200909/28-661.htmlBSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。数据段:数据段(data segment)通常是指用来存放程转载 2013-02-27 20:30:49 · 537 阅读 · 0 评论 -
Kernel paic -not syncing: Attempted to kill init!---- linux2.6.32.移植到TQ2440
这篇文章重点在于探讨移植linux2.6.32和busybox到TQ2440开发板上可能出现的问题分析对于移植过程,请按照指导书上的内容按部就班操作问题1. 卡死描述 文件系统不能加载Copy linux kernel from 0x00200000 to 0x30008000, size = 0x00200000 ... Copy Kernel to SDRAM转载 2013-03-30 23:19:17 · 3005 阅读 · 0 评论 -
DM9000的驱动在TQ2440+linux2.6.32下的移植
http://hi.baidu.com/andio/item/f6072b29d9e3bdf850fd8785这里我们主要阐述DM9000的驱动在TQ2440+linux2.6.32下的移植,分俩部分,一是驱动移植,一是测试程序硬件平台:TQ2440,DM9000EP内核 : linux2.6.32编译工具: codesource出品 a转载 2013-03-30 15:41:47 · 1399 阅读 · 0 评论 -
-/bin/sh: [命令/可执行程序]:not found的解决办法
关于mini2440上-/bin/sh: 命令:not found的解决办法我按照mini2440的移植手册移植了linux内核和文件系统不同的是我用的交叉编译器是最新的4.4.1而没有用天嵌科技提供的交叉编译器,当我移植好了yaffs文件系统,想写个helloworld程序在开发板上测试下,我把编译好的helloworld文件放到yaffs文件系统的/usr/bin目录下,但当我运行/u转载 2013-04-05 16:16:42 · 19712 阅读 · 1 评论 -
Linux配置文件列表
启动引导程序配置文件 LILO /etc/lilo.conf GRUB /boot/grub/menu.lst 系统启动文件核脚本 主启动控制文件 /etc/inittab SysV启动脚本的位置 /etc/init.d、/etc/rc.d/init.d或/etc/rc.d SysV启动脚本链接的位置 /etc/init.d/rc?.d、/etc/rc.d/rc?.转载 2013-03-28 16:19:57 · 734 阅读 · 0 评论 -
uboot分析之u-boot.lds
//下面是Uboot/board/QQ2440/u-boot.ldsOUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*//*指定输出可执行文件是elf格式,32位ARM指令,小端*/O转载 2012-07-30 22:05:16 · 1191 阅读 · 0 评论 -
nfs挂载文件系统
1. 在内核里添加对nfs的支持2. 设置/etc/exportsNFS_DIR *(rw,sync,no_root_squash)3. 开启nfs serversudo /etc/nfs-kernel-server restart如果没有请安装.4. 设置uboot nfs启动参数setenv bootargs root=/dev/nfs nfsroot原创 2012-08-15 10:28:49 · 834 阅读 · 0 评论 -
s3c2440 MPLL & UPLL
S3C2440有两个PLL(phase locked loop)一个是MPLL,一个是UPLL。MPLL用于CPU及其他外围器件,UPLL用于USB。用于产生FCLK, HCLK, PCLK三种频率,这三种频率分别有不同的用途: FCLK是CPU提供的时钟信号。 HCLK是为AHB总线提供的时钟信号, Advanced High-performance Bus,主要用于高速外设,比如内存控转载 2012-08-14 08:10:42 · 1106 阅读 · 0 评论 -
DAVINCI调试ARM端应用程序
DAVINCI调试ARM端应用程序拿到DM365的开发板好几天了,各种环境也都搭建成功了,Demo程序也跑起来了。现在就想如何来调试应用程序。在开始之前心里其实就明白,Linux下是不可能有Windows下那么好用的IDE工具的。所以首先想到使用gdb,然后再去找找有没有稍微人性化一点的IDE工具。下面就是我的调试过程。1. 建立源文件(hello.c)host # ged转载 2012-04-25 20:22:09 · 1841 阅读 · 1 评论 -
opencv2.0.0在dm365上的移植
1.解压opencv2.0.0的源码2.进入源码目录,写一个configure.sh文件内容如下:#!/bin/bash./configure \ --host=arm-linux \ --prefix=/root/Desktop/OpenCV_2.0.0_forARM \ --libdir=/root/Desktop/OpenCV_2.0.0_forARM/lib \ --in原创 2012-04-23 22:35:56 · 1670 阅读 · 6 评论 -
嵌入式volatile关键字
今天在看S3C2440开发板的初始化代码时,对#define A (* (volatile unsigned long *) 0x48000000这种形式的定义方式有困惑,于是求助GOOGLE大神,在网上搜到了一些文章,觉得以下三篇文章对理解这个有些作用:文章一:对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的。如果系统结构支持独立的IO地址空间,并且是端口映射,就必须转载 2012-05-15 23:00:51 · 681 阅读 · 0 评论 -
keil for ARM下的调试与下载环境的搭建。
题外话:编译环境选择推荐对于刚刚接触ARM裸机编程的各位,我要特别的进行提醒一下,就是关于编译环境的选择问题。目前主流的有ADS+AXD,KEIL FOR ARM,IAR FOR ARM三种,我开始使用的ADS+AXD进行学习,因为光盘里面自带,而且很多资料都是他的,但是个人感觉真心调试十分的不方便,而且各种容易死机,并且现在也已经不更新了,北航一本讲嵌入式的书出了一个第二版,就是把ADS转载 2012-05-16 13:49:47 · 4269 阅读 · 0 评论 -
关于嵌入开发中ARM的C代码优化
2008年07月28日 22:22:02 关于嵌入开发中ARM的C代码优化下面是网络上收集关于ARM的C代码优化方法,在嵌入开发中应该有用: [声明:以下方法非本人发现和总结,均为有心之人无私贡献,谢谢他们的劳动与分享!] ======================================================= C数据类型1. C语言的程序优化与转载 2012-06-10 12:54:52 · 3460 阅读 · 0 评论 -
nor flash启动与nand flash启动的区别
1)接口区别:NOR FLASH地址线和数据线分开,来了地址和控制信号,数据就出来。NAND Flash地址线和数据线在一起,需要用程序来控制,才能出数据。通俗的说,就是光给地址不行,要先命令,再给地址,才能读到NAND的数据。而且都是在一个总线完成的。结论是:ARM无法从NAND直接启动。除非装载完程序,才能使用NAND Flash.2)性能区别NOR的传输效率很转载 2012-07-18 09:25:37 · 10397 阅读 · 6 评论 -
ARM920T 有两个具体协处理器
1.CP14调试通信通道协处理器调试通信通道协处理器DCC(the Debug Communications Channel)提供了两个32bits寄存器用于传送数据,还提供了6bits通信数据控制寄存器控制寄存器中的两个位提供目标和主机调试器之间的同步握手。通信数据控制寄存器以下指令在 Rd 中返回控制寄存器的值:MRC p14, 0, Rd, c0, c0此控制寄存器中转载 2012-08-04 15:07:13 · 1445 阅读 · 0 评论 -
ARM指令条件码
当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行。当指令的执行条件满足时,指令被执行,否则指令被忽略。每一条ARM指令包含4位的条件码,位于指令的最高4位[31:28]。条件码共有16种,每种条件码可用两个字符表示,这两个字符可以添加在指令助记符的后面和指令同时使用。例如,跳转指令B可以加上后缀EQ变为BEQ表示“相等则跳转”,即当CPSR中的Z标志转载 2012-08-04 15:37:29 · 8817 阅读 · 2 评论 -
ARM协处理器及指令
ARM 微处理器可支持多达 16 个协处理器,用于各种协处理操作,在程序执行的过程中,每个协处理器只执行针对自身的协处理指令,忽略 ARM 处理器和其他协处理器的指令。ARM 的协处理器指令主要用于 ARM 处理器初始化 ARM 协处理器的数据处理操作,以及在ARM 处理器的寄存器和协处理器的寄存器之间传送数据,和在 ARM 协处理器的寄存器和存储器之间传送数据。 ARM 协处理器指令包括以下 5转载 2012-08-04 13:11:25 · 643 阅读 · 0 评论 -
tslib1.4移植
交叉编译tslib-1.4过程最近交叉编译了tslib-1.4,把主要过程和要注意的地方写下来,并在tq2440开发板2.6.30.4内核实验成功。gcc为4.3.3,光盘内置那个1-./autogen.sh 2-echo ac_cv_func_malloc_0_nonnull=yes>$ARCH-linux.cache3-./configure --host=$A转载 2012-07-20 15:51:48 · 689 阅读 · 0 评论 -
framebuffer显示JPEG图片
#include #include #include #include #include #include #include #include #include #include #define FB_DEV "/dev/fb0"/***************** function declaration *********转载 2012-07-20 09:57:42 · 863 阅读 · 0 评论 -
TQ2440 ADS 1.2 汇编点亮4个LED
该程序在ADS1.2上编译通过。ADS上的相关设置如下: 启动DNW后,先设置一下:LED1~LED4对应着 GPB5~GPB8,GPB的端口配置寄存器GPBCON的地址为0x56000010,端口数据寄存器的地址为0x56000014 源代码如下: AREA LED_ON,CODE,READONLYENTR转载 2012-08-05 10:15:42 · 1211 阅读 · 0 评论 -
s3c2410 MMU
MMU,全称Memory Manage Unit, 中文名——存储器管理单元。 许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大转载 2012-08-09 08:47:11 · 616 阅读 · 0 评论 -
Ubuntu下Eclipse搭建ARM开发环境
第一步:安装JRE 和 Eclipse 详细步骤请参考:http://blog.csdn.net/ex_net/article/details/7251664 第二步:安装arm-linux-gcc 和 arm-linux-g++ (1)复制 arm-linux-gcc-4.3.2.tgz 到 /home/tools 目录下,然后解压缩到 根目录下转载 2012-07-27 16:29:53 · 2195 阅读 · 0 评论 -
Linux配置文件介绍
介绍每个 Linux 程序都是一个可执行文件,它含有操作码列表,CPU 将执行这些操作码来完成特定的操作。例如,ls 命令是由 /bin/ls 文件提供的,该文件含有机器指令的列表,在屏幕上显示当前目录中文件的列表时需要使用这些机器指令。几乎每个程序的行为都可以通过修改其配置文件来按照您的偏好或需要去定制。Linux 中有没有一个标准的配置文件格式?一句话,没有。不熟悉 Lin转载 2013-03-28 16:22:20 · 935 阅读 · 0 评论