分类:默认分类

android boot image

全志 a64 linux sdk采用了android 的boot image,这里顺着该sdk系统理解android的引导镜像。

如下linux-3.10/scripts/build.sh 代码片段显示,在完成内核编译后,改脚本直接将kernel的二进制可执行文件和cpio的gzip压缩包rootfs.cpio.gz 一起合并进入boot.img。

对于如上 mkbootimg 通过review github mkbootimg 代码片段确定该应用功能。

整合传递参数后,mkbootimg 依次将header(metadata)、kernel、ramdisk、等信息到一个文件。

这里需要深入理解metadataboot_img_hdr_v1,它描述这个引导镜像的kernel、ramfs 大小基地址。

直接dump boot.img 验证如上首地址的metadata。

理解json 数据类型

和亮哥对json的数据类型有了争议,这里直接dump http的post 数据。分析如下post数据的false值。

对比了如上的false值,发现还是一个字符串。

beyond compare 使用记录

  • beyond compare 4 key

  • 使用到期后提示需要注册,并且不能打开软件,亦或者在注册 Beyond Compare 选项会一闪而过,不能弹出输入密钥窗口。

    删除安装文件夹的BCUnrar.dll。

  • 使用如上密钥一段时间后提示密钥已注销。

    尝试删除C:\Users\Mdp-Jay\AppData\Roaming\Scooter Software\Beyond Compare 4 xml 文件。

ble5.0 蓝牙协议概述

从这部分开始详细介绍蓝牙协议栈功能、接口、协议栈工程关联、实现协议栈的文件和任务,该任务也作为协议栈应用的最高优先级任务。TI 采用库文件的方式作为协议栈的一个主策略,尽管如此,还是需要开发者了解协议栈各个抽象的功能和相互作用。

蓝牙 5.0 核心规范包含 LE 和 BR/EDR 两种设备类型,其中 LE 主要是设计为低功耗、小数据终端产品。BLE5.0 核心主要包含以下功能:

  • 2M Sym/s PLY 层设计(2M Symbol Rate 物理层)。
  • LE 信道选择算法 #2
  • LE 安全连接
  • LE 数据长度扩展
  • LE 隐私
  • LE LCAP 面向连接的信道支持
  • LE 链路层拓扑结构
  • LE Ping
  • 从机功能扩展
  • 连接参数请求

以上功能均在蓝牙 5.0 协议栈实现,并且可以选择编译。

如图 1 ,蓝牙协议栈包含一个 Host 和 Controller 两个逻辑实体。这种区分从经典蓝牙的 BR/EDR 就存在了,各种功能独立实现,任务配置文件和应用相关都在 Host 的 GAP、GATT 抽象层。

图1. 协议栈基础

BLE 工作在无需认证的 2.4G 免费频段,该频段广泛应用于 ISM(工业、科学、医疗)领域。BLE 通过跳频通信实现抗干扰特性,是 GFSK 调制信号,它采用 1Mbps 码元率 PHY 层设计,可以实现 1Mbps 波特率通信。BLE5.0 优化的物理层设计可以实现 2Mbps 的 PHY 层。

stm32cube programmer

官方产品介绍页面

初次使用ST-Link需要安装驱动, 如果已经安装过Keil或者STM32CubeProgrammer 会自动安装驱动。打开设备设备管理器(Win+R 键入devmgmt.msc)确定。

如果显示未知设备,需要手动安装驱动。驱动路径在C:\Keil_v5\ARM\STLink\USBDriver C:\Program Files (x86)\STMicroelectronics\STM32Cube\STM32CubeProgrammer\Drivers\stsw-link009_v3。

按照以下接口依次一一对应仿真器连接。

直接在ST 官网下载 Flash 烧写工具 STM32CubeProgrammer 安装,需要Java 环境,如果未安装,会自动跳转到下载页面提示安装。

  • 双击打开软件,提示Not connected 点击 Connect(确认已经正常连接仿真器和IC)

    成功连接设备后提示Conneceted.

  • 按照以下步骤依次点击,勾选。

    1、选择 Erasing &programming 按钮;

    2、点击Browse 找到我们需要烧写的固件(通常为* .bin、*.hex、*.axf);

    3、勾选Verify progrmming(可选);

    4、Full chip erase(全部擦出一次,可选);

    5、Start Programming (开始编程);

    6、弹出和LO...