Bootloader 跳转到 RT-Thread 或 FreeRTOS(基于 STM32) 作者:猾蚁 QQ:7376220一.Bootloader 程序1. 准备好升级程序项目,可以使用 STM32CubeMX 来自动生成代码,然后自己编写代码实现升级策略.2. 跳转代码实现Main.c#defineBOOT_LOADER_Address0x08000000#defineBOOT_LOADER_SIZE (200*1024) //0x32000(200KB)#defineBOOT_OS_Add…
本实验基于正点原子stm32f4探索者板子 请移步我的RT Thread论坛帖子. https://www.rt-thread.org/qa/forum.php?mod=viewthread&tid=422726&page=1&extra=#pid469704 下一步有多个选项: 1.精读生成的keil工程代码                                  2.可在此基础上去使用文件系统,参考文章:                                …
串口通讯例程 通过上面的练习,对STM32项目开发有了一个直观印象,接下来尝试对串口RS232进行操作. 1.   目标需求: 开机打开串口1,侦听上位机(使用电脑串口测试软件)发送的信息,然后原样输送到串口1. 2.   创建项目 a)   禁用Finsh和console b)   默认情况下,项目文件包含了finsh,它使用COM1来通讯,另外,console输出(rt_kprintf)也使用了COM1.因此,在运行scons命令生成项目文件之前,修改rtconfig.h,禁用这两项.(下图…
1.   创建项目 a)   禁用Finsh和console b)   默认情况下,项目文件包含了finsh,它使用COM1来通讯,另外,console输出(rt_kprintf)也使用了COM1.因此,在运行scons命令生成项目文件之前,修改rtconfig.h,禁用这两项.(下图L65, L70) c)   生成项目文件 运行scons --target=mdk4 –s 打开生成的项目文件,可以看到,文件组finsh已经不再被包含进来了. d)   创建echo.c 新建一个C文件echo…
RT启动进入常规桌面 微软Surface RT发布的时间已经不短了,相信很多朋友都已经熟悉了这个全新的平板,并且已经上手.Surface RT开机默认进入的界面为Windows UI,这对于经常使用App的朋友来说并没有什么,但是对于那些经常使用Office办公的朋友来说就不是那么方便了. 如果我们想要跳过Windows UI界面,让系统直接进入到桌面下该如何操作呢?我们可以通过修改注册表来进行跳过. 进入注册表 首先使用Win+R快捷键打开“运行”窗口或者在“搜索栏”中输入regedit,打开…
1.不要把跳转函数放在中断中,如此导致在跳转后的app或者bootloder都是在中断状态,只要你一开启该中断,就可能出现硬件中断了 2.如果你的APP使用了ucos系统,在跳转函数中还需要增加__set_CONTROL(0);//把psp修改成msp:这样是为了把ucos系统中的psp置回msp,否则容易出现硬件中断 MSP和PSP 的含义是Main_Stack_Pointer 和Process_Stack_Pointer,在逻辑地址上他们都是R13 这意味着同一个逻辑地址,实际上有两个物理寄…
RTGUI 据说RTGUI是多线程的,因此与RT-Thread OS的耦合度较高,有可能要访问RT-Thread的线程控制块.如果要移植到其它OS,估计难度较大.目前还处于Alpha状态,最终将会包含进RT-Thread中,成为其中的标准组件. 1.  RTGUI下载 当前,要获取包含RTGUI的源码,需要到SVN库里去拉. 因此,需要先安装SVN客户端.比较简单的就是命令行,当然你也可以其它选择. 这里使用Apache Subversion command line tools,下载地址:ht…
1.  补注 a)      硬件,打通通讯通道 若学习者购买了学习板,通常可以在学习板提供的示例代码中找到LCD的相关驱动代码,基本上,这里的驱动的所有代码都可以从里面找到. 从上面的示意图可见,MCU要在LCD上显示内容,需要经过: 1.  Core 2.  Dbus,SystemBus 3.  Bus Matrix 4.  FSMC 5.  SSD1963 6.  LCM 驱动LCD,就要相应地将这些通道开启,初始化,只要其中一个环节未打通,就不可能成功点亮LCD屏. 首先是到SSD196…
本文以stm32f4xx平台介绍串口驱动,主要目的是:1.RTT中如何编写中断处理程序:2.如何编写RTT设备驱动接口代码:3.了解串行设备的常见处理机制.所涉及的主要源码文件有:驱动框架文件(usart.c,usart.h),底层硬件驱动文件(serial.c,serial.h).应用串口设备驱动时,需要在rtconfig.h中宏定义#define RT_USING_SERIAL. 一.RTT的设备驱动程序概述 编写uart的驱动程序,首先需要了解RTT的设备框架,这里以usart的驱动来具体…
注释:这是19年初的博客,写得很一般,理解不到位也不全面.19年末得空时又重新看了RTThread的SPI和GPIO,这次理解得比较深刻.有时间时再整理上传. --------------------------------------------------------------------------------------------------------------------------------------------------------------------------…
后记: 之前,我把SPI的片选在Cubemx中配置成了SPI_NSS.现在我给它改为了GPIO_OUTPUT.  同时参考了别人的类似的一个操作无线模块(采用SPI设备驱动)的例子程序(清楚了RTT的系统API的调用流程).年初第一天上班,有空回过头来看这个问题,就成功解决了. ------Sx1278.h------------------------------------------------------------------------------------------------…
为什么要在stm32 f103上面移植freertos   stm32 f103 以他的全面的文档,亲民的价格,强大的功能.成为无数微设备的方案首选.在市场上有极大的使用量.市场占有率也是非常的高.freertos作为一个开源的微型操作系统,凭借着它的资源占用小,功能强大,文档齐全,成为各大芯片公司都支持的操作系统,也是程序员操作系统学习的不二首选.所以,把这两者结合起来,除了能给我们的产品提供强大的支撑之外,还积累的很多基础技术.笔者花了不少心思才把这个移植好,在这里做个记录.希望能给你一些启…
转自:http://blog.csdn.net/loongembedded/article/details/41747523 2014-12-05 14:37 3599人阅读 评论(2) 收藏 举报 分类: Android Bootloader(68) Android 开发之 ---- bootloader (LK) LK是什么 LK 是 Little Kernel 它是 appsbl (Applications ARM Boot Loader)流程代码  ,little kernel 是小内核…
Android 开发之 ---- bootloader (LK) LK是什么 LK 是 Little Kernel 它是 appsbl (Applications ARM Boot Loader)流程代码  ,little kernel 是小内核小操作系统. LK 代码 在 bootable/bootloadler/lk 目录下 LK 代码结构 +app            // 应用相关 +arch           // arm 体系 +dev            // 设备相关 +i…
1. Unlock Bootloader是解除系统启动加载器(Bootloader)的原厂限制, 让用户可以使用到更多的功能(如刷新内核.刷ROM.修改超频....) Bootloader(系统启动加载器)是开机载入程序,最主要的作用是引导系统正确启动,它是Android操作系统(包括控制台)和手机硬件联系的桥梁, 类似电脑裡面的BIOS (Basic Input and Output System). 手机开机时,会启动bootloader来启动放在ROM里面的系统内核完成手机的开机过程 .…
问题背景 最近往一个armv7板子的bootloader中移植了解压算法,移植本身还比较顺利,但移植完了发现,功能是正常的,但效率大打折扣.解压同样的数据,耗时大约是uboot的10倍. 初步定位 从这个10倍的量级上,比较怀疑是Cache相关,但其他怀疑的因素也要先确认了下.先确认下直接相关的DDR和CPU. DDR的驱动是完全一样的,所以DDR先排除. CPU的话,芯片上电后时钟是固化在芯片中的BootROM设定的,默认比较低,但看代码CPU时钟是调整过了,已经提高到1G了.为了确认改动是生…
作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux.嵌入式领域经典书籍. 转 载:欢迎转载文章,转载需注明出处. 目录 bootloader 跳转到操作系统 操作系统的 header 布局 建立操作系统的三个段描述符 操作系统跳转到应用程序 应用程序调用操作系统中的函数 不论是在 x86 平台上,还是在嵌入式平台上,系统的启动一般都经历了 bootl…
本文是网上转载,版权所有. Keil环境中建立带FreeRTOS的STM32L项目 1.先把source文件夹复制至project目录,然后在keil中添加RTOS文件,如图: 其中heap_2.c按需选择,可以是heap_1.c等,若需croutine型任务则还需添加croutine.c文件. 2.添加include目录,位于source下的include文件夹. 3.把FreeRTOSConfig.h文件复制到source下的include文件夹,或者其他用户文件夹下也可,这是FreeRTO…
参考资料: 基于ARM 的嵌入式系统Bootloader 启动流程分析 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计) Android系统启动流程 -- bootloader 在main()之前,IAR都做了啥? STM32 IAP程序 源码 和测试代码 有详细的中文注释 基于STM32的IAP设计文档 基于IAP的STM32程序更新技术 STM32自学笔记 STM32 IAP的bootloader编程 stm32 Bootloader设…
摘要:通过lua-nginx-module中的ngx.thread同时执行多个任务. ngx_lua中访问多个第三方服务 ngx_lua中提供了ngx.socket API,可以方便的访问第三方网络服务.如下面的代码,通过get_response函数从两个(或者更多)的源服务器获取数据,再生成响应发给客户端. location / { content_by_lua_block { local get_response(host, port) local sock = ngx.socket.tcp…
基于<MySQL学习分享--Thread pool>对Thread pool架构设计的详细了解,本文主要对Thread pool的实现进行分析,并根据Mariadb和Percona提供的开源实现,进行简单的比较和评估. 1.<The Thread Pool Plugin> MySQL官方文档中,对Thread pool进行了详细的介绍,主要从实现和使用角度进行了说明.MySQL企业版实现通过插件方式实现,对源码逻辑没有侵入,是比较友好的方式.文档描述的实现机制方面,跟架构设计基本无…
作者:Hello,Panda 一般而言,Xilinx Microblaze会被用来在系统中做一些控制类和简单接口的辅助性工作,比如运行IIC.SPI.UART之类的低速接口驱动,对FPGA逻辑功能模块初始化配置及做些辅助计算等等.类程序的代码量普遍不大,常常在十几KB到几时KB之间,因此对存储的需求通常也不是太高,使用FPGA内部RAM资源便已经够用.那么,当Microblaze需要运行文件系统.USBHCD.网络协议栈甚至是操作系统时,代码量可能会高达几MB甚至是几十MB的规模,此时程序就必须…
创建线程的两种方式: 1:创建Thread类的子类 ---基于继承的技术 . 2:以Runnable接口实例为构造参数直接通过new  创建 Thread 实例.---基于组合的技术. public class ThreadOne extends Thread { @Override public void run() { System.out.println( Thread.currentThread().getName()); } } public class ThreadTwo imple…
域名跳转 就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 .   参数格式 参数: Apache mod_rewrite 规则重写 1) R[=code](force redirect) 强制外部重定向 说明:强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码. 2) F(force URL to be forbidde…
域名跳转 就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 . 域名跳转配置 1.多域名指定一个域名重定向 # 空格分割域名 server_name www.123.com www.456.com www.678.com; # 判断如果访问域名不等于www.123.com,就指定到www.123.com if ($host != 'www.123.com') { rewrite ^/(.*)$ http://www.123…
Apache Rewrite实现URL的跳转和域名跳转   Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基 于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式.如果要想用到rewrite模块,必须先安装或加载rewrite模块.方法有两种一种是编译apache的时候就直接 安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块. 基于服务器级的(httpd.…
博主是个小白,打算把这段时间系统学习RTOS的文章统一整理到这里,另外本文会给出一些参考性资料和指导性建议: 本文宗旨 FreeRTOS 是由Richard Barry在2003年由设计的,由于其设计的小巧简单,整个核心代码只有3到4个C文件.在设计之初就异军突起,累计开发者数百万,是目前市场占有率最高的RTOS,现在FreeRTOS已经支持三十多种芯片,基本包含市场上所有的微控制器. FreeRTOS在2018年被亚马逊收购,继续遵循GPLV2许可协议完全免费. Richard Barry为了…
目录 前言 概念 作用 必看点 实现 添加几个宏定义 源码 FreeRTOS STM32 定时器 简要说明 前言 本笔记基于 stm32+FreeRTOS. 主要参考野火.安富莱. 概念 简单概要: 各任务cpu利用率: 打印出各任务在某段时间内站用cpu时长的比例. 原理很简单: 开启一个高精度的定时器 让一个全局变量(如:ulCpuTraceTick)不断往上累加 每次切换任务时,记录上一个任务占用了多少个高精度定时器的tick 累加到该表示该任务的变量中(如:ulCpuTraceTaskA…
这是我第一次使用FreeRTOS构建STM32的项目,踩了好些坑,又发现了我缺乏对于操作系统的内存及其空间的分配的知识,故写下文档记录学习成果. 文章最后要解决的问题是,如何恰当地分配FreeRTOS中的堆.任务栈的空间.但是在概念的理解上,也需要知道STM32内存的相关知识.所以首先大致介绍一下STM32的内存结构. STM32内存结构 STM32的数据在物理上分别储存在RAM和Flash中.RAM可读可写,掉电清零.Flash可读不可写,但能掉电储存,并且一般空间比RAM大很多. 在关于如何…
0.前言     去年(2013年)的整理了LwIP相关代码,并在STM32上"裸奔"成功.一直没有时间深入整理,在这里借博文整理总结.LwIP的移植过程细节很多,博文也不可能一一详细解释个别部分仅仅能点到为止.     [本文要点]     [1]不带操作系统的LwIP移植,LwIP版本号为1.4.1.     [2]MCU为STM32F103VE,网卡为ENC28J60.     [3]移植过程重点描写叙述ethernetif.c和LwIP宏配置等.     [4]一个简单的TCP…