hex

结合Keil描述如何编写ARM处理器的Bootloader!

a 夏天 提交于 2020-10-28 16:29:57
之前从应用的角度给大家分享过Bootloader相关的文章,今天从底层原理来给大家描述ARM处理器如何编写Bootloader。 1 关于Bootloader Bootloader顾名思义就是引导加载程序,是在操作系统或应用程序运行之前的一段程序,是在系统上电后执行的一段程序代码。 BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式平台。因此,在嵌入式平台里建立一个通用的BootLoader几乎是不可能的。尽管如此,我们仍然可以对bootloader归纳出一些通用的概念来,以指导用户特定的BootLoader设计与实现。 ---来源百度百科 Bootloader在手机、电脑、众多嵌入式系统中都存在,它的作用有很多,比如:初始化底层应用驱动、加载应用程序、更新应用程序等。 不同的设备,Bootloader可能差异很大,通常来说Bootloader比较依赖底层硬件和实际项目需求。 2 如何编写bootloader bootloader是一段引导加载程序代码,它更新用户的应用程序代码,可以使用很多硬件下载通道(例如USB、网络端口)获得新代码。 在执行引导ROM之后,将执行bootloader程序,并在需要时进行更新,然后执行最终用户应用程序。 引导加载程序和用户应用程序应作为两个独立的Project或Object进行编写和编译,从而产生两个独立且可执行的(bin/hex

堆重启_uaf_hacknote

让人想犯罪 __ 提交于 2020-10-28 15:42:53
参考链接 http://blog.eonew.cn/archives/490 https://blog.csdn.net/weixin_44864859/article/details/107181869 这里记录下经典的含有后门的UAF漏洞程序。 //hacknote 最简单的堆题目 libc 2.23 以及 含后门的UAF漏洞程序 //hacknote先看第一个含有后门的UAF漏洞程序: 查看文件相关属性及开启保护 32位elf程序,没有去符号。// 给源代码会更香。 只开启了NX保护。 $ file hacknote_backdoor hacknote_backdoor: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=44ee75c492628b3691cdcdb07759e9bbe551644a, not stripped $ checksec hacknote_backdoor [*] Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX

stm32显示二维码 STemwin5.22库改为STemwin5.44库

拥有回忆 提交于 2020-10-28 08:21:33
今天本来准备用stm32f103zet研究图像二维码,发现已经移植好的工程里STemwin静态库里面没有GUI_QR_creat(),GUI_QR_delete(),GUI_QR_Draw(), GUI_QR_GetInfo()4个API函数。本来用的是已经移植好的正点原子的stemwin裸机编程文件,正点原子emwin库是5.26版本,属于老版本了,我在网上看到emwin包含二维码生成的库最低版本是5.36,因此我需要将emwin库下的静态库STemWin526_CM3_Keil.lib给替换成含有二维码的版本。 st官网目前能下到的版本号是5.32无法使用,想要下载最新的emwin,需要: 1.下载stcubemx 2.下载里面对应的f1的库(注意F1的库有很多,下面有英文注释) 3.找到文件C:\Users\用户民\STM32Cube\Repository\STM32Cube_FW_F1_V1.2.0\Middlewares\ST\STemWin\Lib 演示图里由于我就没有更新最新的库了,所以版本是5.28。由于前一阵学习emwin,几家子stm32开发板的资料下了遍,我看了一下野火的emwin库是5.44版本的,因此接下来全是以emwin5.44的库来举例。 1.找到 F103_霸道\ STemWIN544_裸机移植模版\STemWin\lib STemWin_CM3

微信小程序连接低功率蓝牙控制单片机上硬件设备

眉间皱痕 提交于 2020-10-24 07:12:12
1.软件部分介绍    微信小程序是 一种新的应用,用户不需要下载应用只用通过扫二维码或者打开链接就能使用,使用完后不需要卸载,直接关闭就行了。微信在2017年初推出微信小程序开发环境。任何企业,媒体,个人都可以注册开发。是一种全新的 开发模式。微信也因此受到许多程序员的一致好评,尤其是微信小程序的云开发,提供大量数据处理接口,让初学者也可以很快入手。不需要后端数据库的支持,自己一个人就可以开发前端和后台。 微信小程序为蓝牙模块提供了18个API。其中低功率蓝牙9个,传统蓝牙9个。本次设计使用了其中的9个接口: (1) openBluetoothAdapter,这个API用来初始化蓝牙适配器; (2) startBluetoothDevicesDiscovery,开始搜索蓝牙设备; (3) onBluetoothDeviceFound,判断搜索到的蓝牙设备的信号强度; (4) createBLEConnection,连接搜索到的蓝牙设备; (5) stopBluetoothDevicesDiscovery,关闭搜索蓝牙设备; (6) getBLEDeviceServices,获取蓝牙的deviceId; (7) getBLEDeviceCharacteristics,获取蓝牙设备服务的所有特征值; (8) notycharacteristicsId

单片机下载文件:HEX文件和BIN文件的区别

社会主义新天地 提交于 2020-10-22 06:06:51
单片机程序写好之后,我们都要把程序下载到单片机的内存中,单片机才会按照程序员的逻辑执行命令实现功能。之前也讲过下载单片机的几种方式,比如ISP下载,JTAG下载,下载文件的格式最常见的是hex文件,这个格式大家都是知道的,还有一种bin文件是单片机的下载文件。下面介绍这两种格式的区别。 HEX文件和BIN文件是我们经常碰到的2种文件格式。下面简单介绍一下这2种文件格式的区别: 1. hex文件包含地址信息。 在用ISP方式烧写程序时,我们都有这样的经验:1)选择单片机型号;2)选择串口号;3)设置波特率(或者默认);4)选择下载的文件;5)点击下载按钮下载。如下图所示。 经过这几步后,程序下载工作就完成了,在以上的步骤中我们并没有选择要把程序下载到单片机的哪块内存中,即不需要设置地址。因为HEX文件内部的信息已经包括了地址。而烧写BIN文件的时候,用户是一定需要指定地址信息的。单片机多下载hex文件。 2. BIN文件格式只包括了数据本身,没有包含地址 bin文件本身只是数据,没有包含地址信息,所以在下载bin文件时需要选择内存的起始地址和终止地址,即要把bin文件下载到指定的内存空间。通常需要指定程序内存地址的芯片为ARM芯片和DSP芯片。 3、HEX文件和BIN文件大小不一样 对于bin文件,通过右键属性查看到的 文件的大小 就是 数据的实际大小 。而对HEX文件而言