随笔分类 -  ARM

嵌入式系统ARM
Linux定时器的使用
摘要:使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用linux内部的三个定时器,另一个是用sleep, usleep函数让进程睡眠一段时间,使用alarm定时发出一个信号,还有那就是用gettimeofday, difftime等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法效率低,所以不常用。 阅读全文
posted @ 2012-08-02 01:06 风行雪舞 阅读(992) 评论(0) 推荐(0)
关于S3C2440时钟设置的理解
摘要:首先S3C2440内部有三个时钟 FCLK:主频时钟--主要做为芯片的内核时钟 HCLK: 总线时钟--主要是作为LCD,USB,DMA时钟信号 PCLK: 接口时钟--主要是作为串口,GPIO,SPI,ADC等接口时钟信号 2440通过设置引脚OM2和OM3来选择时钟源Fin(外部晶振或外部时钟源),时钟源信号Fin通过2440芯片内部的产生FCLK和HCLK、PCLK时钟信号,这3大时钟信号像动脉一样带动整个芯片的工作。 这三个时钟一般成比例关系,通常设置为1:4:8,1:3:6的分频关系,也就说如果主频FLCK是400MHz,按照1:4:8的设置,那么HLCK是100MHz,PLCK是50MHz。 阅读全文
posted @ 2012-05-15 15:14 风行雪舞 阅读(1167) 评论(0) 推荐(0)
Big Endian 和 Little Endian
摘要:谈到字节序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用big endian方式存储数据,而x86系列则采用little endian方式存储数据。那么究竟什么是big endian,什么又是little endian呢? 阅读全文
posted @ 2012-05-15 14:24 风行雪舞 阅读(1036) 评论(0) 推荐(0)
nand flash坏块管理OOB,BBT,ECC
摘要:NAND FLASH的管理方式:以三星FLASH为例,一片Nand flash为一个设备(device),1 (Device) = xxxx (Blocks),1 (Block) = xxxx (Pages),1(Page) =528 (Bytes) = 数据块大小(512Bytes) + OOB 块大小(16Bytes,除OOB第六字节外,通常至少把OOB的前3个字节存放Nand Flash硬件ECC码)。 关于OOB区,是每个Page都有的。Page大小是512字节的NAND每页分配16字节的OOB;如果NAND物理上是2K的Page,则每个Page分配64字节的OOB。如下图: 阅读全文
posted @ 2012-05-14 22:03 风行雪舞 阅读(11883) 评论(0) 推荐(1)
nandflash与文件系统、oob数据扫盲……
摘要:NAND Flash每一页大小为(512+16)字节(还有其他格式的NANDFlash,比如每页大小为(256+8)、(2048+64)等),其中的512字节就是一般存储数据的区域,16字节称为OOB(Out OfBand)区。通常在OOB区存放坏块标记、前面512字节的ECC较验码等。 阅读全文
posted @ 2012-05-14 21:56 风行雪舞 阅读(1273) 评论(0) 推荐(0)
arm汇编adrl(以及ldr与adr的区别)
摘要:看《嵌入式linux应用开发》第六章实例中看到个句: adrl r2,men_cfg_val 最初对adr1相当不解,后来发现,那个不是数字1,而是字母l(认真看头部,有点区别的) 这里记录下ADRL的用法: 功能:将相对于程序或相对于寄存器的地址载入寄存器中。 与 ADR 指令相似。ADRL 生成两个数据处理指令,因此它比 ADR 加载的地址范围要宽。 阅读全文
posted @ 2012-05-12 17:43 风行雪舞 阅读(5248) 评论(0) 推荐(1)
ARM汇编特殊符号
摘要:汇编程序中以.开头的名称并不是指令的助记符,不会被翻译成机器指令,而是给汇编器一些特殊指示,称为汇编指示(Assembler Directive)或伪操作(Pseudo-operation),由于它不是真正的指令所以加个“伪”字。 _start是一个符号(Symbol),符号在汇编程序中代表一个地址,可以用在指令中,汇编程序经过汇编器的处理之后,所有的符号都被替换成它所代表的地址值。在C语言中我们通过变量名访问一个变量,其实就是读写某个地址的内存单元,我们通过函数名调用一个函数,其实就是跳转到该函数第一条指令所在的地址,所以变量名和函数名都是符号,本质上是代表内存地址的。 阅读全文
posted @ 2012-05-12 17:39 风行雪舞 阅读(725) 评论(0) 推荐(0)
该死的UTF-8的BOM
摘要:首先说明一下什么是BOM: BOM: Byte Order Mark UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行。 我在编译ARM汇编程序时,总是出现Error: bad instruction `'等等错误,经过认真分析,发现代码没有任何问题,应该是编码的问题,因为我平时习惯把所有文件都保存为UTF-8格式以方便在windows和linux之间查看,没有考虑到BOM有无问题,经UE多次更换保存格式后,发现使用UTF-8无BOM才能让编译顺利通过,这才发现UTF-8的BOM对ARM汇编无用,所以平时一般采用UTF-8无BOM格式即可。 阅读全文
posted @ 2012-05-10 14:19 风行雪舞 阅读(549) 评论(0) 推荐(0)
Linux下ARM汇编语法
摘要:第一部分 Linux下ARM汇编语法 尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作 ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点 (www.gnu.org)上下载有关规范。 一. Linux汇编行结构 任何汇编行都是如下结构: [:] [} @ comment [:] [} @ 注释 Linux ARM 汇编中,任何以冒号结尾的标识符都被认为是一个标号,而不一定非要在一行的开始。 阅读全文
posted @ 2012-05-10 13:39 风行雪舞 阅读(912) 评论(0) 推荐(0)
ARM汇编书写格式及符号(symbol)和表达式(expr)
摘要:汇编语言的语句格式如下: {symbol}{instruction/directive/pseud0-instruction}{;comment} symbol:标号/局部标号/常量/变量 instruction:指令 directive:伪操作 pseudo-instruction:伪指令 comment:注释 {}中括号内是可选 阅读全文
posted @ 2012-05-10 13:37 风行雪舞 阅读(1641) 评论(0) 推荐(0)
AXD 在win7 vista下 启动失败。error starting external process process error code 87
摘要:系统是64位win7的,ADS1.2 。按照视频教程完成了一个简单的程序。 make之后然后debug,弹出窗口error starting external process process error code 87。初步估计是系统兼容问题。 将CodeWarrior for ARM Developer Suite.exe和AXD Debugger.exe设置为xp sp3兼容模式,禁用桌面元素,以管理员权限启用,确定即可。 重新打开文件。重新make和debug,能够正常debug。win7的配色方案有所改变。 阅读全文
posted @ 2012-05-03 17:25 风行雪舞 阅读(1315) 评论(0) 推荐(0)
Python2.5.4移植到arm-linux
摘要:1 移植需求需求:在Arm9上运行python2.5.4。ARM Target环境:S3C2410A & arm-linux-2.4.18,和 AT91SAM9261 & arm-linux-2.6.20。host编译环境:RHEL5U3, gcc 4.1.2, arm-linux-gcc 2.95.3,arm-linux-gcc 3.4.4需要cross compile的软件包:sqlite 3.6.14, python 2.5.4, boa-0.94.13.2 交叉编译sqlite先到 http://www.sqlite.org/download.html 下载最新的sql 阅读全文
posted @ 2011-12-27 03:58 风行雪舞 阅读(1616) 评论(0) 推荐(0)
TQ2440下的openssh移植
摘要:移植ssh到arm 今天在internet上参考了几位前辈文章, 将ssh移植到了TQ2440的arm板上, 现在不需要用minicom来控制uclinux了。 板子上的串口终于可以接上采集器。 主要参考文章: •http://blog.chinaunix.net/u1/43047/showart_371372.html •http://blog.chinaunix.net/u2/63379/showart_513655.html 阅读全文
posted @ 2011-12-27 03:47 风行雪舞 阅读(617) 评论(0) 推荐(0)
nfs:server is not responding,still trying 原因与解决方案
摘要:今天,用开发板通过nfs挂载主机,想从主机上面拷贝一些资料,可是竟然出现:nfs:server is not responding,still trying , 我用的是友善之臂的mini2440,操作系统使用的是Ubuntu8.04。 本来还以为是nfs出了故障,但是google了一下发现原来不是nfs的原因,而是由于传送的数据太大,出现数据包丢失现象。 NFS 的默认传输协议是 UDP,而PC机与嵌入式系统通过UPD交互时就会出现严重的网卡丢包现象。可用的解决方案是:在客户端改用TCP协议,使用下面的命令, mount -t nfs -o intr,nolock,rsize=10... 阅读全文
posted @ 2011-12-25 22:35 风行雪舞 阅读(1927) 评论(0) 推荐(0)
goAhead 2.5嵌入式web服务器移植到arm9 2440 + linux中
摘要:本文内容概要:详细描述了移植goAhead 2.5到S3C2440的linux系统的过程、步骤、遇到的问题及其解决方法。开发环境: 宿主 机:window XP;虚 拟 机:ubuntu9.10; 交叉编译器:arm-uclibc-gcc(arm-linux-gcc-4.3.2可以顺利编译通过)———————————————————————————————————————————————————————————————————1. GoAhead Web服务器介绍goAhead Web服务器,小巧、精致,提供了值得称道的性能,特别适合于嵌入式系统,因此,在很多嵌入式产品如路由器中都用到了goA 阅读全文
posted @ 2011-12-22 00:40 风行雪舞 阅读(948) 评论(0) 推荐(0)
GoAhead2.5源代码分析之1-用户管理(um.c)
摘要:Um.c(用户管理)umconfig.txt----------------------------------------TABLE=usersROW=0name=adminpassword=Uzgroup=Administratorprot=1disable=0TABLE=groupsROW=0name=Administratorpriv=4method=3prot=1disable=0TABLE=accessROW=0name=/main.htmlmethod=3secure=0group=Administrator------------------------------------ 阅读全文
posted @ 2011-12-22 00:37 风行雪舞 阅读(1105) 评论(0) 推荐(0)
GoAhead2.5源代码分析之2-文件数据库(emfdb.c)
摘要:Emfdb.c(文件数据库)数据库按照下面结构体存放typedef struct dbTable_s { char_t *name; int nColumns; char_t **columnNames; int *columnTypes; int nRows; int **rows;} dbTable_t;每个table对应上面结构的一个变量。Name是table的名字nColumns是table有多少列columnNames是各个列的名字columnTypes是各个列中内容的类型,是字符串,还是整数nRows是table有多少行rows是:rows[n]指向各个行的指针,rows[n][m 阅读全文
posted @ 2011-12-22 00:35 风行雪舞 阅读(536) 评论(0) 推荐(0)
GoAhead2.5源代码分析之3-用户管理实例(umui.c)
摘要:Umui.c(用户管理实例)文件中代码与webs-2-5\wwwdemo\um中的页面对应,(addgroup.asp、addlimit.asp、adduser.asp、delgroup.asp、dellimit.asp、deluser.asp、dspuser.asp、loadcfg.asp、savecfg.asp、um.htm)是这些页面调用的form、asp函数,通过这些实例,有助于对用户管理的理解。------------------------------------------------------------------------------------------------ 阅读全文
posted @ 2011-12-22 00:34 风行雪舞 阅读(479) 评论(0) 推荐(0)
GoAhead2.5源代码分析之4-用户管理用到的一些函数(uemf.c misc.c)
摘要:Uemf.c和misc.c(用户管理用到的一些函数)void error(E_ARGS_DEC, int etype, char_t *fmt, ...)功能:将出现的错误根据错误类型,输出对应字符串说明:函数中使用了var_start,var_end, var_arg等宏下面我们来探讨如何写一个简单的可变参数的C函数。写可变参数的C函数要在程序中用到以下这些宏:voidva_start(va_listarg_ptr,prev_param);typeva_arg(va_listarg_ptr,type);voidva_end(va_listarg_ptr);va在这里是variable-arg 阅读全文
posted @ 2011-12-22 00:33 风行雪舞 阅读(492) 评论(0) 推荐(0)
GoAhead2.5源代码分析之5-块分配模块(h.c和balloc.c)
摘要:h.c和balloc.cint hAlloc(void ***map)功能:分配使用的map数组说明:-----------------------------------------------------------------------------------------------------------------int hFree(void ***map, int handle)功能:释放使用的map数组说明:-------------------------------------------------------------------------------------- 阅读全文
posted @ 2011-12-22 00:33 风行雪舞 阅读(562) 评论(0) 推荐(0)

无觅相关文章插件,快速提升流量