现在位置: 首页 > 技术文章 > 裸机开发 > 文章
2017年06月03日 裸机开发 ⁄ 共 254字 暂无评论 ⁄ 阅读 125 次
在一个项目中,使用了STM32,数据结构比较复杂,采用动态内存分配,一开始程序运行老是异常,调试查找原因,发现是使用malloc分配内存空间时不成功造成的,经分析原因在于Startup_stm32fxx.s文件中定义的堆空间太小导致的,如下图: malloc 因为malloc是在堆空间中分配内存,设置的大小小于需要分配的空间是肯定是要失败的,我把堆大小改为10K就OK了。
阅读全文
2015年08月18日 裸机开发 ⁄ 共 5872字 评论 1 条 ⁄ 阅读 300 次
转自http://blog.csdn.net/gwl11/article/details/6364336   上面在说到安装中断的时候说过,调用request_irq()时的参数中irq的确定是个难题,为什么? 你如果到网络上查一下关于linux的资料,十有八九是关于i386体系结构上的,但linux是可以运行在多种cpu上的,比如采用arm内核的s3c2410,在i386体系上的经验在这里可以用么?我们试验一下:硬件准备,使用s3c2410的EINT0引脚作中断测试,为它编写一个中断驱动程序,最后将...
阅读全文
2014年04月18日 裸机开发 ⁄ 共 8129字 暂无评论 ⁄ 阅读 393 次
一、MMU的产生       许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(o...
阅读全文
2014年04月11日 裸机开发 ⁄ 共 906字 暂无评论 ⁄ 阅读 202 次
DSP 28335中有一些配置寄存器是受保护的,无法直接操作。也就是说在对这些寄存器进行修改之前,需要先去掉保护功能 而保护状态是由状态寄存器中EALLOW标志来指示的。汇编指令“EALLOW”就是将该标志位置位,允许对受保护的寄存器操作 。 EALLOW一般和EDIS配套使用,在对受保护的寄存器操作之后,用EDIS恢复寄存器的被保护状态。 在TI的说明中 712 的98页,有介绍: 5.2 EALLOW 保护寄存器 Preliminary EALLOW 保护寄存器 280x 器...
阅读全文
2013年12月12日 裸机开发 ⁄ 共 338字 暂无评论 ⁄ 阅读 87 次
STM32三种启动模式对应的存储介质均是芯片内置的三种启动模式对应的存储介质均是芯片内置的,它们是: 1)用户闪存 =  芯片内置的Flash。 2)SRAM =  芯片内置的RAM区,就是内存。 3)系统存储器 =  芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。 在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管...
阅读全文
2013年12月11日 裸机开发 ⁄ 共 2949字 评论 1 条 ⁄ 阅读 1,333 次
IAP,全称是“In-Application Programming”,中文解释为“在程序中编程”。IAP是一种对通过微控制器的对外接口(如USART,IIC,CAN,USB,以太网接口甚至是无线射频通道)对正在运行程序的微控制器进行内部程序的更新的技术(注意这完全有别于ICP或者ISP技术)。ICP(In-Circuit Programming)技术即通过在线仿真器对单片机进行程序烧写,而ISP技术则是通过单片机内置的bootloader程序引导的烧写技术。无论是ICP技术还是ISP技术,...
阅读全文
2013年12月03日 裸机开发 ⁄ 共 8408字 评论 2 条 ⁄ 阅读 843 次
boot_image 接《STM32启动文件详解<一>》 相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方式有了比较大的变化。ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一条指令执行复位中断服务程序的方式启动,即固定了复位后的起始地址为0x000000(PC = 0x000000)同时中断向量表的位置并不是固定的。而Cortex-M3内核则正好相反,有3种情况: 1、 通过boot引脚设置可以将中断...
阅读全文
2013年12月02日 裸机开发 ⁄ 共 2157字 暂无评论 ⁄ 阅读 1,778 次
boot 在嵌入式应用程序开发过程里,由于使用C语言编程,基本很少涉及到机器底层寄存器的执行过程,一般都会直接在main函数里开始写代码,似乎main成为了理所当然的起点,尽管从C程序的角度来看程序都是直接从main函数开始执行。然而,MCU上电后,是如何寻找到并执行main函数这一问题却很自然的被忽略了!事实上微控制器是无法从硬件上去定位main函数的入口地址,因为使用C语言作为开发语言后,变量/函数的地址便由编译器在编译时...
阅读全文
2013年11月30日 裸机开发 ⁄ 共 1872字 暂无评论 ⁄ 阅读 256 次
先来看两张图: CORTEX-M3内核的存储器映射 stm32实际系统映射 一、存储器映射 1、统一编址,程序存储器、数据存储器、外设寄存器组织在一个4GB的地址空间。 2、小端格式 3、映像(stm32f107,256KB产品) 存储器映像 可以看到,所谓的256KB闪存,是指主存储,片上FLASH如下图所示: 片上FLASH 介绍了片上的资源后,来看他们的地址映像。芯片将4GB的空间,划分为8个512MB的块(block),这些块有些是整块不用的,芯片对地址的安...
阅读全文

×