b MAIN 和 ldr pc,=MAIN 的区别(谈到代码位置无关性) 看bootloader的时候经常看到这两种写法,不太明白区别,网上查了查.其实看了之后还是一头雾水? 其中,2和3 似乎是一个东西,但结果是相反的.晕. //=============================================== 有几种说法: 第一种,说寻址范围不同.(http://bulo.mcuol.com/GaoKefang/view.htm?topicID=126)LDR指令可以全地址范围内…
在之前的话 新年过去了,那么久没有好好学习,感觉好颓废,现在就uboot的一些基础问题做一些笔记,顺便分享给大家,不过由于见识有限,如果有不足之处请多多指教. 位置无关?什么意思?我们先了解一些基础知识..... 我们都知道我们写的代码最后是运行在内存(SDRAM或者SRAM,通常是SDRAM)中的,但是在运行之前他们是保存在诸如nand.flash等非易失存储设备中的,而这些存储设备的地址要映射到CPU能够寻找的地址上(一般映射在0X0地址上,这个后面详细解释),这样才能得到要运行的代码.而代…
原作者:Eli Bendersky http://eli.thegreenplace.net/2011/11/11/position-independent-code-pic-in-shared-libraries-on-x64 之前的文章.以为x86架构编译的代码为样例,解释了位置无关代码(PIC)怎样工作.我承诺在还有一篇文章里涉及x64[1]上的PIC,如今就是了.本文将不会太进入细节,由于假定读者已经理解了理论上PIC怎样工作. 总之.对于这两个平台想法是相似的,但由于每一个架构独有的特…
上一篇博客详细讲到了设计时(DesignTime)和运行时(RunTime)的概念与区别,不过没有给出实际的Demo,今天整理了一下,做了一个例子,贴出来分享一下,巩固前一篇博客讲到的内容. 简单回顾一下: 组件有两种状态,即设计时和运行时,组件存在设计器中时,它就处于“设计时”:组件存在运行过程时,它就处于“运行时”: 无论设计器中组件还是运行过程中的组件,它们都是“组件实例”,所谓“实例”,就是new出来了对象,可想而知,无论在设计器中还是运行过程中,组件都会执行一些代码: 一般情况下,可以…
在JZ2440中,点亮LED就是给LED的控制位设置为输出,数据位设置为低电平,而通过按键点亮LED,就需要将按键对应的控制位设置为输出. 下面是JZ2440的3个LED电路图: 下面是JZ2440的3个按键的电路图 通过查找nLED_1,nLED_2,nLED_4对应的引脚,发现它们分别对应GPF4,GPF5,GPF6,如图: 通过查找EINT0,EINT2,EINT11对应的引脚,发现它们分别对应GPF0,GPF2,GPG3,如图: 由此,我们再去看2440的Datasheet,查看它们的控…
S3C2440中有三种时钟,分别是FCLK,HCLK和PCLK.这三种时钟的功能各不相同,其中FCLK主要是为ARM920T的内核提供工作频率,如图: HCLK主要是为S3C2440 AHB总线(Advanced High performance Bus)上挂接硬件提供工作频率,AHB总线主要挂接有内存,NAND,LCD控制器等硬件,如图: PCLK主要是为APB总线提供频率,APB总线上主要挂载UART.WatchDog等硬件控制器,如图: S3C2440上的时钟源是12MHz,如果想让CPU…
JZ2440的启动方式有两种,一种是从NOR FLASH中启动,还有一种就是从NAND FLASH中启动. 如果从NOR FLASH启动,CPU会访问NOR FLASH的0地址,而0地址位于BANK0. 如果从NAND FLASH启动,由于NAND FLASH地址和数据共用总线,因此BANK0失效,此时0地址访问片内的SRAM,CPU会把NAND的前4K完全拷贝到片内SRAM,然后从0地址运行. 当2440上电时,NAND的前4K程序拷贝到SRAM中的0地址处,程序首先关闭看门狗,然后初始化存储…
存储控制器与CPU及其它外设的关系 我们看到cpu上集成了一个存储管理器,外围的存储设备都接在这个存储管理器上.cpu负责发出命令,其它的一切工作都交给了存储管理器.那么存储管理器是如何来管理这些外设的呢? 首先地址空间被分为8个bank(bank0-bank7),每个bank对应128m空间.每个bank都对应一个选通位(nGCS0-nGCS7),选通位为低电平是表示该bank选通.这样的话,虽然地址线只有27条,但是总的地址空间可以达到了1G.s3c2440的地址空间组织如下图所示: 我们看…
一.安装配置minicom 1.安装minicom lingd@ubuntu:~$ sudo apt-get install minicom 2.配置minicom lingd@ubuntu:~$ sudo minicom -s       出现这样的配置界面:             +-----[configuration]------+             | Filenames and paths      |             | File transfer protocol…
菜单设计一 // 创建菜单 public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, 0, 0, "关于"); menu.add(0, 1, 1, "退出"); return super.onCreateOptionsMenu(menu); } //菜单响应 public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemS…