现在位置: 首页 > techbulo发表的所有文章
  • 05月
  • 12日
技术文章 ⁄ 共 671字 ARM伪指令之地址读取:ADR ADRL LDR已关闭评论 ⁄ 阅读 1,608 次
1、ADR伪指令--- 小范围的地址读取 ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。 ADR伪指令格式 : ADR{cond} register, expr 地址表达式expr的取值范围: 当地址值是字节对齐时,其取指范围为: +255 ~ 255B; 当地址值是字对齐时,其取指范围为: -1020 ~ 1020B; 2、ADRL伪指令----中等范围的地址读取 A......
阅读全文
  • 05月
  • 11日
常见问题 ⁄ 共 590字 arm linux驱动编写中,能否直接进行ioremap?已关闭评论 ⁄ 阅读 1,861 次
以下为论坛摘录: ioremap 2440的板子。 我想为spi编写一个简单的字符型驱动。 看了下内核代码中的spi驱动代码,发现在把寄存器地址ioremap之前,有一些 platform_get_resource,request_mem_region之类的操作。 想问下直接对寄存器进行ioremap,然后用writeb、writel之类的函数去操作可以吗?看到网上有很多代码是直接这么做的。会不会存在危险? 高手指点下,谢谢! 回答:   1、标准的做法就是这样的,楼主担心什么危险,系统的寄存器地址是唯一的,而且跟进程的虚拟内存没有关系   2、platform_get_resource 是为了获取地......
阅读全文
  • 05月
  • 10日
常见问题 ⁄ 共 173字 “huplayer已停止工作”解决方法已关闭评论 ⁄ 阅读 3,377 次
问题描述:用uplayer观看加密视频,出现“huplayer已停止工作”的提示 Huplayer 解决方法: 下载软件,解压下载好的文件以后,双击运行,选择“删除所有许可证”。操作完以后,重新进行验证。 下载地址
阅读全文
  • 05月
  • 06日
常见问题 ⁄ 共 202字 解决:内核编译 fatal error: curses.h: 没有那个文件或目录已关闭评论 ⁄ 阅读 6,615 次
ubuntu11.04下编译内核 执行make menuconfig时出现如下错误   make-menuconfig 这时因为ubuntu系统中缺少一个套件 ncurses devel ,把此套件安装下即可 apt-get install libncurses5-dev
阅读全文
  • 04月
  • 25日
技术文章 ⁄ 共 1726字 LDR伪指令和LDR指令及MOV指令的区别已关闭评论 ⁄ 阅读 1,973 次
ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。 比如想把数据从内存中某处读取到寄存器中,只能使用ldr 比如: ldr r0, 0x12345678 就是把0x12345678这个地址中的值存放到r0中。 而mov不能干这个活,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构的芯片区别最大的地方。x86中没有ldr这种指令,因为x86的mov指令可以将数据从内存中移动到寄存器中。 另外还有一个就是ldr伪指令,虽然ldr伪指令和ARM的ldr指令很像,但是作用不太一样。 ldr伪指令可以在立......
阅读全文
  • 04月
  • 23日
常见问题 ⁄ 共 339字 MDK工程中,多个启动文件,KEIL是怎么识别要编译哪个的?已关闭评论 ⁄ 阅读 5,027 次
在整ST的3.4.0固件库的时候,打开了它的工程模板,发现里面有多个启动文件: 多个启动文件 按说添加多个启动文件,编译会出错的。可是这个工程pass得非常好……keil是怎么识别到要编译startup_stm32f10x_hd.s的?寻觅了半天才注意到那些文件图标上的轻微差别。 startup_stm32f10x_hd.s这个文件上没有其他文件图标上的三个红点,表示它现在是包含在项目中的。查看它的配置属性: 注意到了:Include in Target Build。 也就是说在编译的时候编译这个文件。其他几个文件这个选项都是没有勾选的,也就是不编译。
阅读全文
  • 04月
  • 22日
技术文章 ⁄ 共 2310字 什么是位置无关码(PIC)已关闭评论 ⁄ 阅读 1,322 次
应用程序必须经过编译、汇编和链接后才变成可执行文件,在链接时,要对所有目标文件进行重定位(relocation),建立符号引用规则,同时为变量、函数等分配运行地址。当程序执行时,系统必须把代码加载到链接时所指定的地址空间,以保证程序在执行过程中对变量、函数等符号的正确引用,使程序正常运行。在具有操作系统的系统中,重定位过程由操作系统自动完成。  在设计Bootloader程序时,必须在裸机环境中进行,这时Bootloader映像文件的运行地址必须由程序员设定。通常情况下,将Bootloader程序下载到ROM的0x0地址进行启动,而在大......
阅读全文
  • 04月
  • 18日
裸机开发 ⁄ 共 8129字 ARM MMU工作原理剖析已关闭评论 ⁄ 阅读 3,060 次
一、MMU的产生       许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块的交换是由OS完成的,但是必......
阅读全文
  • 04月
  • 16日
常见问题 ⁄ 共 943字 IAR升级之后编译以前的工程报错的解决办法已关闭评论 ⁄ 阅读 6,996 次
今天打开一个以前编译正常的项目(用IAR5.5建立的),编译时提示如下错误(现在用的IAR6.3): Error[Pe147]: declaration is incompatible with "__interwork  __softfp unsigned long __get_PSP(void)" (declared at line 52 of "C:\Program Files\IAR   C:\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h  如下图所示: IAR_6.3error 解决方法如下: 1.Check the "Use CMSIS" option from  Project options > General Options > Library Configuration: 如下图所示 Use CMSIS option 2.Remove all CMSIS header files from y......
阅读全文
  • 04月
  • 11日
裸机开发 ⁄ 共 906字 dsp中eallow edis是什么意思已关闭评论 ⁄ 阅读 2,634 次
DSP 28335中有一些配置寄存器是受保护的,无法直接操作。也就是说在对这些寄存器进行修改之前,需要先去掉保护功能 而保护状态是由状态寄存器中EALLOW标志来指示的。汇编指令“EALLOW”就是将该标志位置位,允许对受保护的寄存器操作 。 EALLOW一般和EDIS配套使用,在对受保护的寄存器操作之后,用EDIS恢复寄存器的被保护状态。 在TI的说明中 712 的98页,有介绍: 5.2 EALLOW 保护寄存器 Preliminary EALLOW 保护寄存器 280x 器件上的几个控制寄存器受EALLOW 保护机制保护以防止虚假的CPU 写入。状态寄存器1 (ST1) 中的 EALLOW 位指......
阅读全文
  • 04月
  • 09日
工具配置 ⁄ 共 2109字 mini2440(micro2440) 使用 J-Link V8 直接烧写 Nor flash已关闭评论 ⁄ 阅读 2,760 次
如果你有mini2440或者是你板子对应的配置文件,这个问题就很好解决,file->open project,选中初始化工程文件: j-link set j-link set 设置好前面这些之后,就可以进行下面的烧写工作了 如果你没有这个配置文件,不要紧,下面将配置过程列举如下,大家可以作为参考: 1. 打开J-Flash ARM,并进入菜单:Options-->Project settings j-link set 2.主要设置CPU选项和Flash选项 CPU : Core --> ARM9, Little endian Use target RAM(faster)-->Addr:40000000 4KB(不选很慢;从Nor flash启动时内部Boot SRAM的地址和大小,参......
阅读全文
  • 03月
  • 08日
操作系统 ⁄ 共 5106字 《自己动手写操作系统》学习笔记(六)已关闭评论 ⁄ 阅读 2,314 次
《自己动手写操作系统》学习笔记目录(持续更新)  http://www.techbulo.com/832.html LDT使用初步 LDT使用初步 在本节中,我们将添加一个LDT段,在段中打印一个字符L,从而学习如何利用程序的LDT段。程序的执行流程随之也会发生变化,我们将分析代码和分析代码结构。 一、概要分析: 在上一节的基础上,我们增加一个段LDT和一个LDT中的一个段codeA。需要注意的是,LDT存在的前提是GDT,因为LDT本身是一个段中,需要由GDT中的信息,得到基地址。另外,这个场景,给出了段选择子,我们如何去索引描述符呢?思考以后,我们知道,我们......
阅读全文
×