
嵌入式linux
彩虹下的天桥
Was mich nicht umbringt, macht mich stärker。
展开
-
ARM中的---汇编指令
一. 带点的(一般都是ARM GNU伪汇编指令)1. ".text"、".data"、".bss"依次表示的是“以下是代码段”,“以下是初始化数据段”,“以下是未初始化数据段”。2.".global"定义一个全局符号,通常是为ld使用。比如经常看到的.global _start3.".ascii"、".byte"、".shor转载 2017-03-17 21:06:40 · 606 阅读 · 0 评论 -
arm汇编基础stmdb和ldmia(转)
先看个例子:void test2(int a,int b,int c){ int k=a,j=b,m=c;}GCC反汇编:00000064 :mov ip, sp //IP=SP;保存SPstmdb sp!, {fp, ip, lr, pc} //先对SP减4,再对fp,ip,lr,pc压栈。----转载 2017-03-15 17:04:12 · 7917 阅读 · 0 评论 -
ARM FP寄存器及frame pointer介绍
理论上来说,ARM的15个通用寄存器是通用的,但实际上并非如此,特别是在过程调用的过程中。PCS(Procedure Call Standard for Arm architecture)就定义了过程调用中,寄存器的特殊用途。Role in the procedure call standardr15 PC The Program Counter.r14 LR The转载 2017-03-15 17:18:10 · 6444 阅读 · 0 评论 -
更改printk打印级别
1、查看当前控制台的打印级别 cat /proc/sys/kernel/printk 4 4 1 7 其中第一个“4”表示内核打印函数printk的打印级别,只有级别比他高的信息才能在控制台上打印出来,既 0-3级别的信息2、修改打印 echo "新的打印级别 4 1 7" >/proc/sys/kernel/printk3、不够打印转载 2017-03-26 19:55:12 · 262 阅读 · 0 评论 -
对韦东山老师移植最新uboot的总结
一:准备移植1、从下面的官网下载最新的U-boot。用google英文版搜索最新的u-boot源码 ftp://ftp.denx.de/pub/u-boot/2、建立sourceinsight工程 a、解压并在E:\colin weidongshan\transplant_u-boot-2012.04.01\u-boot-2012.04.01建立SI b、添加文件到SI工程转载 2017-04-14 12:14:24 · 637 阅读 · 0 评论 -
Linux Makefile 详细语法
概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写m转载 2017-04-05 21:06:01 · 241 阅读 · 0 评论 -
ldr
LDR 的两种用法1)LDR pc, =MyHandleIRQ 表示将MyHandleIRQ符号放入pc寄存器中2)LDR PC,MyHandleIRQ 表示将读取存储器中MyHandleIRQ符号所表示的地址中的值,及需要多读一次存储器。 在代码中:start: ldr pc,=MyHandleReset @jump to Handl转载 2017-04-14 20:43:20 · 3512 阅读 · 0 评论 -
oob与flash
NAND Flash每一页大小为(512+16)字节(还有其他格式的NANDFlash,比如每页大小为(256+8)、(2048+64)等),其中的512字节就是一般存储数据的区域,16字节称为OOB(Out OfBand)区。通常在OOB区存放坏块标记、前面512字节的ECC较验码等。 cramfs、jffs2文件系统映像文件中并没有OOB区的内容,如果将它们烧入NORFlash中,则是简单的“转载 2017-04-16 21:21:12 · 732 阅读 · 0 评论 -
【C语言】关于宏定义中#和##符号的使用和宏定义展开问题
有一道经典的C语言问题,关于宏定义中#和##符号的使用和宏定义展开问题 程序如下:#include #define f(a,b) a##b#define g(a) #a#define h(a) g(a) int main(){ printf("%s\n", h(f(1,2))); printf("%s\n", g(f(1转载 2017-04-21 19:42:08 · 651 阅读 · 0 评论 -
USB规范EHCI,UHCI,OHCI区别
为 了实现USB主机功能的统一,提高系统的可靠性与可移植性,上游芯片生产厂家在确定USB标准的同时,也确定了相应的主机规范。现在用得比较广泛的有三 种,其中的用于USB2.0高速设备的EHCI (Enhanced Host Control Interface增强主机控制接口)规范是INTEL用于USB2.0高速主机的。而同是INTEL推出的UHCI(Universal Host Control I转载 2017-04-09 16:05:27 · 961 阅读 · 0 评论 -
更改printk打印级别
1、查看当前控制台的打印级别 cat /proc/sys/kernel/printk 4 4 1 7 其中第一个“4”表示内核打印函数printk的打印级别,只有级别比他高的信息才能在控制台上打印出来,既 0-3级别的信息2、修改打印 echo "新的打印级别 4 1 7" >/proc/sys/kernel/printk3、不够打印转载 2017-03-13 21:53:14 · 532 阅读 · 0 评论 -
结构体数组初始化
《代码大全》建议在变量定义的时候进行初始化,但是很多人,特别是新人对结构体或者结构体数组定义是一般不会初始化,或者不知道怎么初始化。1、初始化typedef struct _TEST_T { int i; char c[10];}TEST_T;TEST_T gst = {1, “12345”};//可以初始化,设置i为1转载 2017-03-27 16:02:16 · 28532 阅读 · 0 评论 -
[ARM]ldr和 adr/adrl 伪指令的区别
一.首先熟悉几个arm地址相关的概念:首先arm地址有三个地址概念:编译地址、 期望运行物理地址、实际运行物理地址、相对地址、绝对地址、位置无关编译地址 :编译阶段的生成地址,其是相对地址 ,有些地址还没确定,如调用其他.O文件中的函数或库函数期望运行物理地址 :链接阶段生成的地址(期望绝对地址 ),会确定编译阶段没有确定的地址,并会根据链接器假设期望的程序烧录运行物理转载 2017-03-21 21:23:24 · 824 阅读 · 0 评论 -
链接地址
位置无关码:CPU取指时,总是相对于本条执行指令的相对地址去取指。比如指行一个ADD指令时,PC要取下一指令的地址,就在原来的基础上+4。这就不管你代码放在存储器的任何位置,只要他们的相对地址没有改变,就能正常执行程序。一般上电复位那几条语句就必须是位置无关码指令。位置相关码:可以这样来说,就是CPU每次取指都从绝对位置去取,而不是上面的相对位置。这个绝对地址就是相对起始地址0来说的。这样,就要求转载 2017-03-12 13:33:30 · 611 阅读 · 0 评论 -
LDS文件格式分析
最近在看Linux内核时,总是遇到一些和连接脚本相关的东东,搞得人一头雾水,终于下定决心把它搞明白,写下一点心得,希望对和我一样的人有所帮助! 连接脚本的格式====================连接脚本是文本文件.你写了一系列的命令作为一个连接脚本. 每一个命令是一个带有参数的关键字,或者是一个对符号的赋值. 你可以用分号分隔命令. 空格一般被忽略转载 2017-03-22 10:25:46 · 607 阅读 · 0 评论 -
jtag general command
The commands documented in this chapter here are common commands that you, as a human, may want to type and see the output of. Configuration type commands are documented elsewhere.Intent:Source转载 2017-03-13 18:10:08 · 752 阅读 · 0 评论 -
FCLK、HCKL和PCLK的关系
三星官方搭载的wince系统的FLCK值为400MHz,HCLK值为100MHz、PCLK值为50MHz。那么这些值通过什么方法计算出来呢?大概过程如下,这些值在外部晶振12MHz的基础上通过PLL的作用倍频到我们需要的核心频率如400MHz,由于该频率过高,需要通过对预分频器进行适当的设置获取外围设备能够正常工作的频率如HCLK 100MHz、PLCK 50MHz。Fclk(给CPU核供转载 2017-03-23 10:41:47 · 4670 阅读 · 0 评论 -
#define 高级用法(Ex) __FILE__ __FUNCTION__ __LINE__
#define 高级用法(Ex) __FILE__ __FUNCTION__ __LINE__我们在写程序的时候,总是或多或少会加入一些printf之类的语句用于输出调试信息,但是printf语句有个很不方便的地方就是当我们需要发布程序的时候要一条一条的把这些语句删除,而一旦需要再次调试的时候,这些语句又不得不一条条的加上,这给我们带来了很大的不便,浪费了我们很多的时转载 2017-03-13 21:38:30 · 1262 阅读 · 0 评论 -
关于unicode编码
最初的unicode编码是固定长度的,16位,也就是2两个字节代表一个字符,这样一共可以表示65536个字符。显然,这样要表示各种语言中所有的字符是远远不够的。Unicode4.0规范考虑到了这种情况,定义了一组附加字符编码,附加字符编码采用2个16位来表示,这样最多可以定义1048576个附加字符,目前unicode4.0只定义了45960个附加字符。Unicode只是一个编码规范,目前转载 2017-04-26 21:00:24 · 3105 阅读 · 0 评论