<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[leftover_crazy的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/leftover_crazy</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; leftover_crazy]]></copyright><item><title><![CDATA[arm体系结构学习笔记 part4 -- 异常处理的返回]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6064169</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6064169</guid><author>leftover_crazy</author><pubDate>Wed, 08 Dec 2010 22:31:00 +0800</pubDate><description><![CDATA[先来说说arm指令的处理过程：pc寄存器保存的总是当前正在取指的指令的地址。如果有如下指令序列S1，S2，S3，S4，S5这五条指令在内存中分布为：PC寄存器保存的总是当前正在取址的指令的地址，arm态下指令长度为4个字节，如图所示当前正在执行的指令为pc-8即pc的值为当前正在执行的指令加8同理在arm9五级流水的情况下：]]></description><category></category></item><item><title><![CDATA[arm体系结构学习笔记  part3 -- 异常处理机制]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6061802</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6061802</guid><author>leftover_crazy</author><pubDate>Tue, 07 Dec 2010 22:15:00 +0800</pubDate><description><![CDATA[先来看看异常向量表： 这个表格给出了当异常发生时候的程序将跳转到的地址  以及跳转到该地址的同时arm核所处的异常模式以未定义异常为例当arm核执行时遇到未定义的指令时  程序将自动跳转到异常向量表中的0x00000004地址处执行 并将处理器切换为未定义模式  与此同时其实arm核还完成了cpsr到spsr_und的备份以及设置异常处理完毕的返回地址保存到lr_und而复位异常的跳转地址为0x0  这是每次系统重新加电的时候arm核总是从0x0地址开始取指令指令    而系统上电时系统所处的模式总是svc]]></description><category></category></item><item><title><![CDATA[arm体系结构学习笔记  part2 -- 中断相关]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6056569</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6056569</guid><author>leftover_crazy</author><pubDate>Sun, 05 Dec 2010 19:21:00 +0800</pubDate><description><![CDATA[中断分类：

1.由软件中断指令SWI引起的软件中断。SWI中断可以实现从用户模式到特权模式的切换。一般用于特权操作的系统程序。
2.由外设引起的硬件中断。arm有两个中断控制信号   一个是fiq一个是irq  。中断控制器是这两个中断和多个外部中断之间的桥梁。通过设置cpsr的6 7位可以使能或者禁止这两类中断。


中断响应时间：

外部中断信号发出到取出中断服务程序的第一条指令经历的时间。FIQ模式下备份寄存器最多，保证了FIQ不需要花更多的时间去备份寄存器数据，而ldm和stm的执]]></description><category></category></item><item><title><![CDATA[arm体系结构学习笔记  part1--处理器模式与寄存器]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6055413</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6055413</guid><author>leftover_crazy</author><pubDate>Sat, 04 Dec 2010 22:25:00 +0800</pubDate><description><![CDATA[ARM920T supports seven modes of operation:
· User (usr): The normal ARM program execution state
· FIQ (fiq): Designed to support a data transfer or channel process
· IRQ (irq): Used for general-purpose interrupt handling
· Supervisor (svc): Protected m]]></description><category></category></item><item><title><![CDATA[arm蛋疼汇编part 10--与位置有关代码   与位置无关代码]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6053974</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6053974</guid><author>leftover_crazy</author><pubDate>Fri, 03 Dec 2010 22:31:00 +0800</pubDate><description><![CDATA[代码一：makefile：test.bin: test
	arm-2440-linux-gnueabi-objcopy -I elf32-littlearm test -O binary test.bin  
	cp test.bin ../../
test : test.o
	arm-2440-linux-gnueabi-ld -Ttext=0x30000000 test.o  -o test
test.o : test.S
	arm-2440-linux-gnueabi-as test.S ]]></description><category></category></item><item><title><![CDATA[arm蛋疼汇编 part9 -- elf文件瞎扯   ]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6048980</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6048980</guid><author>leftover_crazy</author><pubDate>Wed, 01 Dec 2010 23:12:00 +0800</pubDate><description><![CDATA[[leftover-crazy@leftover-crazy 6nd]$ arm-2440-linux-gnueabi-objdump -h test.o test2.o test
test.o:     file format elf32-littlearm
Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         0000007c  00000000  00000000  ]]></description><category></category></item><item><title><![CDATA[arm蛋疼汇编 part8 --   汇编 c  谁调用谁？]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6046651</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6046651</guid><author>leftover_crazy</author><pubDate>Tue, 30 Nov 2010 23:21:00 +0800</pubDate><description><![CDATA[今晚学校网络真无法忍受了  哎～只能直接上代码了：makefile：test.bin: test
	arm-2440-linux-gnueabi-objcopy -I elf32-littlearm test -O binary test.bin
	cp test.bin ../../
test: test.o test2.o
	arm-2440-linux-gnueabi-ld -Ttext=0x30000000 test.o test2.o -o test
test2.o: test2.c
]]></description><category></category></item><item><title><![CDATA[arm蛋疼汇编 part7--ATPCS 被调函数的标准“框架” 非山寨版本]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6043896</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6043896</guid><author>leftover_crazy</author><pubDate>Mon, 29 Nov 2010 21:17:00 +0800</pubDate><description><![CDATA[test.S代码：@保护现场寄存器压栈    
    mov ip,sp
        @使用ip寄存器备份sp  此时sp指向函数调用前的数据栈中的最后一个数据
        @即下一个存放用于本被调函数的数据栈顶地址为sp-4
    stmfd sp!, {fp, ip, lr, pc}   
        @满减栈
        @ pc，lr ，ip ，fp 依次入栈 
        @栈中从高地址到低地址分别对应高编号入栈的寄存器到低编号的入栈寄存器
        ]]></description><category></category></item><item><title><![CDATA[arm蛋疼汇编 part6--写程序怎能不调试  eclipse  cdt zylincdt openocd  gdb 调试]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6040260</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6040260</guid><author>leftover_crazy</author><pubDate>Sat, 27 Nov 2010 23:52:00 +0800</pubDate><description><![CDATA[step1：安装eclipse   cdt  这个google search 一大堆   archlinux  下 yaourt  直接   搞定step2：在线安装安装eclipse  zylincdt插件   eclipse下  Help==>install new software==>work with:  zylincdt - http://www.zylin.com/zylincdt 剩下的google search一堆setp3：安装openocd   yaourt搞定最新版  配置文件如下：]]></description><category></category></item><item><title><![CDATA[arm蛋疼汇编 part5--接着hello uboot part3！ ATPCS]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6038183</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6038183</guid><author>leftover_crazy</author><pubDate>Fri, 26 Nov 2010 19:58:00 +0800</pubDate><description><![CDATA[先上代码：

test.S如下
 
Makefile如下
 

test.S代码分析如下：


 
压栈后栈内数据分布由上而下（从高地址到低地址）分别存放   fp  ip  lr
此时fp存放的是栈内第一个数据的地址  即fp的地址
如此压栈倒腾后sp寄存器便可在我们写的被调程序中随意操作   即可以使用该栈 并且容易根据fp寄存器弹栈    只要在程序结束前恢复fp ip  lr  即符合ATPCS规范
 
ARM-thumb 过程调用标准”：

1，  r0-r3 用]]></description><category></category></item><item><title><![CDATA[arm蛋疼汇编 part4--接着hello uboot part2！]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6035876</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6035876</guid><author>leftover_crazy</author><pubDate>Thu, 25 Nov 2010 21:10:00 +0800</pubDate><description><![CDATA[[leftover-crazy@leftover-crazy 3nd]$ vi test.S
 代码如下：@压栈操作
    str lr, [sp, #-4]!
@函数调用
    ldr r0, =hello   @取hello标签地址给R0 既参数一的地址 
                     @arm汇编参数传递通过
                     @R0传递第一个参数
                     @R1传递第二个参数
                 ]]></description><category></category></item><item><title><![CDATA[arm蛋疼汇编 part3--  转载   ARM微处理器的指令系统]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6033152</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6033152</guid><author>leftover_crazy</author><pubDate>Wed, 24 Nov 2010 19:51:00 +0800</pubDate><description><![CDATA[跳转指令：arm程序跳转的两种方法：           1.直接修改pc寄存器的值   可以实现4GB空间的跳转           2.使用跳转指令   只能实现前后32M空间的跳转B：    相对来说有去无回的跳转    格式：   B{条件}   目标地址         eg：B Lable
@@@@@@@@@@@@@@@@@@@@@@@
CMP R0，#0
BEQ Lable     @相等则跳转 BL：  带返回的跳转 跳转前将PC寄存器的值写入LR寄存器（R14）  格式：   BL{]]></description><category></category></item><item><title><![CDATA[arm蛋疼汇编part 2 -- arm寻址方式]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6030777</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6030777</guid><author>leftover_crazy</author><pubDate>Tue, 23 Nov 2010 21:50:00 +0800</pubDate><description><![CDATA[寻址方式：处理器根据指令给出的地址信息寻找物理地址的方式。立即数寻址：地址信息包含在指令中eg：add r0，r0，#2   @十进制 2为立即数  r0寄存器寻址：地址信息存放于寄存器中eg：add r0，r1，r2 @ r0]]></description><category></category></item><item><title><![CDATA[arm蛋疼汇编part 1]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6020227</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6020227</guid><author>leftover_crazy</author><pubDate>Thu, 18 Nov 2010 22:46:00 +0800</pubDate><description><![CDATA[    mov r0,r1
    mov r0,#133
    ldr r0,=1234567890
    add r0,r1,r0
    sub r0,r1,r0
lable1:
@以下两条指令将r1存储的内存地址为12345内的数据读取到r0中
    ldr r1,=12345
    ldr r0,[r1]
    
label2:    
@以下两条指令将r0中的数据存储到r1保存地址为123456的内存中
    ldr r1,=123456
    str r]]></description><category></category></item><item><title><![CDATA[简单uboot下可执行程序编写笔记]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6013588</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6013588</guid><author>leftover_crazy</author><pubDate>Tue, 16 Nov 2010 23:01:00 +0800</pubDate><description><![CDATA[[leftover-crazy@leftover-crazy bootloaderprj]$ vi hellobootloader1.c 代码如下void (*show)(char *, ...);
int main(int argc, char *argv[])
{
    show = 0x33f9303c;
    show("Hello u-boot!/n");
    return 0;
}
 编译：[leftover-crazy@leftover-crazy bootloaderp]]></description><category></category></item><item><title><![CDATA[程序员的十个层次]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/6006167</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/6006167</guid><author>leftover_crazy</author><pubDate>Sat, 13 Nov 2010 00:11:00 +0800</pubDate><description><![CDATA[<br /><br />自西方文艺复兴以来，中国在自然科学方面落后西方很多，软件领域也不例外。当然现在中国的许多程序员们对此可能有许多不同的意见，有些人认为中国的程序员水平远落后于西方，有些则认为中国的程序员个人能力并不比西方的程序员差，只是整个软件产业落后而已。<br />那么，到底中国的程序员水平比西方程序员水平差，还是中国有许多优秀的程序员达到或超过了西方程序员同等水平呢？要解决这个问题，必须先知道程序员有多少种技术层级，每个层级需要什么样的技术水平，然后再比较中国和西方在各个技术层级的人数，就可以知]]></description><category></category></item><item><title><![CDATA[archlinux平台下  tftp-hpa 的安装配置笔记]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/5976281</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/5976281</guid><author>leftover_crazy</author><pubDate>Sat, 30 Oct 2010 16:35:00 +0800</pubDate><description><![CDATA[[leftover-crazy@leftover-crazy ~]$ yaourt tftp
1 extra/tftp-hpa 5.0-3
    Official tftp server
 选1安装rftp server修改/etc/hosts.allowsudo vim /etc/hosts.allow 内容修改如下#
# /etc/hosts.allow
#
tftpd: ALL  //增加
in.tftpd: ALL //增加
nfsd: ALL
rpcbind: ALL
mou]]></description><category></category></item><item><title><![CDATA[archlinux平台下  fl2440 主机nfs服务器搭建]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/5972809</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/5972809</guid><author>leftover_crazy</author><pubDate>Thu, 28 Oct 2010 21:40:00 +0800</pubDate><description><![CDATA[参考archlinux wikihttps://wiki.archlinux.org/index.php/NFS_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 服务器端和客户端所需要的软件包都是很少的。
你只需要安装:
core/portmap
core/nfs-utils ]]></description><category></category></item><item><title><![CDATA[备份]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/5900416</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/5900416</guid><author>leftover_crazy</author><pubDate>Wed, 22 Sep 2010 00:28:00 +0800</pubDate><description><![CDATA[[INFO ]  Performing some trivial sanity checks
[INFO ]  Build started 20100922.000656
[INFO ]  Building environment variables
[WARN ]  Directory '/home/leftover-crazy/src3' does not exist.
[WARN ]  Will not save downloaded tarballs to local storage.
[]]></description><category></category></item><item><title><![CDATA[archlinux平台下  fl2440 使用minicom加dnw2烧写flash]]></title><link>https://blog.youkuaiyun.com/leftover_crazy/article/details/5895640</link><guid>https://blog.youkuaiyun.com/leftover_crazy/article/details/5895640</guid><author>leftover_crazy</author><pubDate>Sun, 19 Sep 2010 22:34:00 +0800</pubDate><description><![CDATA[minicom使用和安装已经在上一篇中做了简要说明之后是dnw2的安装以及使用首先应该安装usb的驱动对应二进制包为libusbsudo apt-get install libusb-dev    //ubuntu环境
sudo pacman -S libusb
sudo pacman -S libusb1  //archlinux环境
安装完usb驱动后安装dnw2  网上很多文章说的都是自己用dnw2编译安装其实archlinbux下很方便的可以使用yaourt dnw2关于yaourt的使用就不]]></description><category></category></item></channel></rss>