- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 Stm32F4以太网远程固件升级BootLoader踩过官方的坑
历时5个工作日,总算把以太网远程远程固件升级功能完成,期间踩了不少的坑。最初设计的时候参照stm32官方1.26.1标准固件HAL库,新建一个工程,把官方对应的驱动移植到新的工程底下。因为使用以太网方式BootLoader,由于以太网占用内存及ROM空间比较大,故从0x08000000—0x08020000处128KROM空间分配给BootLoader程序,从0x08020000—0x080FFFFF处896KROM空间分配给用户程序。分配空间,下载BootLoader程序到主板上,使用http登陆
2021-08-26 17:35:17
2005
原创 STM32F407上电启动流程研究
开发stm32 M3/M4系列一般都是在IDE下开发,通常程序入口都是main函数,但是在执行main函数之前,mcu到底做了哪些工作,就是本文描述的内容。 MCU上电启动第一件事情,就是确定CPU地址及堆栈地址,通过Boot引脚配置。stm32f407的FLASH地址0x0800 0000—0x080F FFFF,合计1兆字节空间,为主FLASH空间。一般固件都烧录地址从0x0800 0000处开始,也可以通过指定固件地址,从别的地址开始,这种用法多BootLoader启...
2021-08-24 13:26:36
810
原创 从ARM流水线理解ARM的PC指针
我们经常在手册中看到这样的一段文字:当指令对 R15 的读取没有超过任何对 R15 使用的限制时, 读取的值是指令的地址加上 8 个字节。当使用 STR 或 STM 指令保存 R15 时, 出现了上述规则的一个例外。 这些指令可将指令地址加 8个字节保存 (和其他指令读取 R15 一样) 或将指令自身地址加 12 个字节 (将来还可能出现别的数据)。 偏移量是8 还是12 (或是其...
2020-03-01 10:35:44
2989
原创 S3C2440存储器SDRAM控制笔记
最近一年多的时间一直在从事任意轮系机器人运动控制及惯性导航的研究实践,买的开发板闲置了一年多了,决定继续 延续一年多前的学习,继续做笔记。SDRAM读写操作流程Cpu发出nGCS6信号,选中bank7,对应开发板nSCS引脚,引脚标号19 SDRAM芯片行地址使用13根地址线,列地址复用行地址9根地址线,同时还有两根地址线用于芯片内部...
2020-02-29 21:16:33
279
原创 快速迈入高级工程师—提高系统安全可靠稳定的保障性措施理论证明及实施办法
博主电气自动化专业出身,从事工业嵌入式开发工作,自10年毕业至今已经9个年头了,在工作中经常遇到初级工程师犯一些低级的错误。为了让初级工程师也能快速迈入高级工程师行列,整理一些自己的经验心得,与大家分享一下,欢迎一起讨论。 首先我们讨论一下工业领域高级工程师与初级工程师的差异。基本上高级工程师具备以下能力素养。 1.复杂问题简单化 2.在擅...
2019-04-01 23:08:38
349
原创 惯导技术随想
最近在做一个可移动机器人项目,我负责的那一部分有关于惯性导航这一方面的。查阅了相当多的技术资料,也调研了一下市场上惯性导航产品的售价。基本上市场上出售的商用惯导产品起步价都在2000元以上,更高的售价都接近30万了。并且,都有着使用局限,每隔一段时间需要重新校正一次。技术原理上以我查阅的资料来看,绝大多数都离不开 卡尔曼滤波、粒子滤波的各种扩展。 为什么惯导会存在每隔...
2018-10-15 09:18:31
2292
原创 两轮差速运动模型推导过程
下面这张图片是从网络上拷贝过来,以这张图片为模型,我们来一步一步论证推导两轮差速运动模型,以下是原来网络上对这张图片的描述。 下图是移动机器人在两个相邻时刻的位姿,其中 是两相邻时刻移动机器人绕圆弧运动的角度, 是两相邻时刻移动机器航向角(朝向角head)的变化量。 是左右轮之间的间距, 是右轮比左轮多走的距离。 是移动机器人圆弧运动的半径。 从以...
2018-08-31 14:53:01
47207
15
转载 (转载)Makefile简易教程
Makefile简易教程本文部分内容引用:中文维基百科。一个简单的Makefile教程。Makefile简介在软件开发中,make通常被视为一种软件构建工具。该工具主要经由读取一种名为“makefile”或“Makefile”的文件来实现软件的自动化建构。它会通过一种被称之为“target”概念来检查相关文件之间的依赖关系,这种依赖关系的检查系统非常简单,主要通过对比文件的修改时间...
2018-08-22 09:05:06
212
原创 嵌入式linux编程arm初步接触之存储控制中的程序运行时动态加载
韦东山老师的开发板在讲解存储管理技术的时候大致意思如下,片内ram只有4K,可执行程序大小超过4K怎么办,在这里韦东山老师的办法是在可执行代码的首部,运行自身拷贝,把自己拷贝到内存地址足够存放存放程序的地址处,然后直接跳转过去执行,这种技术在stm32里面叫做程序自举,这种技术也叫作程序动态加载,既可以用于软件自举,操作系统引导加载,还可以用于嵌入式系统不停机运行升级。 ...
2018-08-16 18:17:55
569
原创 嵌入式linux编程arm初步接触之优化级别
使用上一遍文章的代码,更改一下Makefile选项测试,原来反汇编生成的代码及Makefile文件内容如下led_elf: file format elf32-littlearm Disassembly of section .text: 00000000 <_start>: 0: e3a00453 mov r0, #1392508928 ; 0x530000...
2018-08-15 09:59:55
361
原创 嵌入式linux编程arm初步接触之启动文件汇编、Makefile、第一个main函数
新建一个汇编启动文件startup.S,代码如下.text.global _start_start: ldr r0,=0x53000000 ;看门狗寄存器地址 mov r1,#0x0 str r1,[r0] ;写入0,禁止看门狗,否则CPU会不断重启 ldr sp,=1<<12 ;设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K bl main...
2018-08-14 18:20:16
790
原创 嵌入式linux编程arm初步接触之汇编、Makefile
近日,买了一块韦东山的JZS3C2440开发板用来学习linux开发,经过几天时间的摆弄,今天,终于实现了usb烧写裸机程序。 还是从经典的点灯开始,首先新建一个名为led.S的汇编文件,然后代码如下所示.text.global _start_start: LDR R0,=0x56000050 ;取地址0x56000050存放到R0寄存器 MOV R1,#0x000...
2018-08-14 17:36:48
283
原创 ROS机器人安装学习笔记
最近做的一个项目需要在ubuntu16.04下做ROS机器人操作系统开发,因为之前从没接触过linux和ros机器人,记录下学习过程,以备后用。 假设ubuntu16.04已经安装好了,我们的目标是安装ROS Kinetic,因为这个版本支持ubuntu16.04。 1.添加软件库到sources.list文件中 sudo ...
2018-07-24 17:32:16
394
原创 stm32f4晶振管理
最近要使用STM32F4芯片做开发,根据自己的编程习惯,做一些学习记录,以便于自己以后查阅。我们在设计电路的时候,一般都会设计MCU使用外部晶振,笔者工作中曾经遇到外部晶振故障导致芯片无法正常启动问题(无内部晶振老的MCU),使用示波器发现的,在更换了外部晶振以后,问题就解决了。由此笔者想到,STM32F4系列自带内部晶振,在外部晶振故障的时候完全可以使用内部晶振,确保软件能够正常...
2018-07-06 11:20:18
3870
原创 自己总结的Linux嵌入式学习路线
嵌入式linux学习路线图 因为目前的开发工作需要用到linux操作系统中的Ubutun16.04,因为之前的工作经验都是在windows下从事嵌入式开发,对linux只是一个概念性的了解。这两天泛读了三本linux新手基础级别书籍,对linux有了一个简要的了解。知道这个操作系统是怎么回事,跟平常使用windows系统有什么相似和差异之处。 目前我负责的这...
2018-07-04 18:13:38
1928
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人