C
文章平均质量分 86
MyeDy
固件开发
展开
-
如何利用qemu搭建SOC protoype:80行代码实现一个Cortex M4 模拟器
随着国内芯片公司越来越多,越来越多的底层程序员需要在pre silicon阶段就要开发代码。而在pre silicon阶段测试方式有多种:方式优点缺点RTL simulation可以验证最准确的硬件行为,可以测试SOC相关代码仿真速度非常慢,且rtl freeze之前硬件有bugFPGA/ZEBU emulation可以验证部分硬件行为,速度相对RTL simulation快价格昂贵,难以布署大量测试,且有些硬件没法仿真软件模拟器,如QEMU速度最快,可以布署大原创 2021-01-22 14:51:52 · 5296 阅读 · 8 评论 -
scons 搭建嵌入式arm编译
最近发现scons真的很好用,python语法比makefile友好很多。准备用scons 替换掉项目中的makefile,重新搭建build system。本文是之前自己刚开始学习scons的一个小demo,用来编译一个嵌入式arm的项目。项目目录-scons_demo - boot.s - cm4.ld - compiler.py - main.c - SConstruct - driver - SConscript - qemu_print.c - sub_driver原创 2021-01-08 17:25:15 · 1519 阅读 · 1 评论 -
imx6ull-qemu 裸机教程2:USDHC SD卡
文章目录1 6UL的USDHC简介1.1 USDHC Block Diagram1.2 USDHC支持的模式1.3 外部信号1.4 Data Buffer1.5 ADMA1.5.1 ADMA Engine1.5.2 ADMA2 Descriptor格式1.6 Register2 SD协议简介2.1 SD总线拓扑2.2 SD总线协议2.3 SD卡功能描述3 QEMU SD卡读写demo3.1 USD...原创 2020-01-29 21:50:25 · 5762 阅读 · 0 评论 -
armv8m(cortex m33) MPU实战
文章目录1 MPU1.1 Memory attributes summary1.2 MPU寄存器1.2.1 MPU Type Register1.2.2 MPU Control Register1.2.3 MPU Region Number Register1.2.4 MPU Region Base Address Register1.2.5 MPU Region Limit Address Re...原创 2020-01-08 20:37:33 · 6967 阅读 · 6 评论 -
FATFS FAT32学习小记
FAT32概述FAT32文件系统由DBR及其保留扇区,FAT1,FAT2 和 DATA 四个部分组成,其机构如下图: 这些结构是在分区被格式化时创建出来的,含义解释如下:DBR及其保留扇区:DBR的含义是DOS引导记录,也称为操作系统引导记录,在DBR之后往往会有一些保留扇区。 FAT1:FAT的含义是文件分配表,FAT32一般有两份FAT,FAT1是第一份,也是主FAT。 FA...原创 2018-08-01 13:22:35 · 7086 阅读 · 3 评论 -
ECDSA 签名验证原理及C语言实现
这两天总算把ECDSA搞明白了,本来想造个ECDSA轮子,但最近有点忙,而ECDSA轮子又不像HASH那样简单,所以就直接拿现成的轮子来记录一些ECDSA学习心得。 这里贴上github上一个比较适合学习的ECDSA代码,当然这个版本的代码没有openssl等商业级的代码专业,但是它足够简单,用来学习ECDSA原理非常合适。 easy-ecc非对称加密算法签名/验证无非包括三步: 1. ...原创 2018-03-25 20:13:28 · 30201 阅读 · 17 评论 -
CMSIS CM3源码注解
文中截图摘自《Cortex_M3权威指南》core_cm3.h1 Memory Map/* Memory mapping of Cortex-M3 Hardware */#define SCS_BASE (0xE000E000) /*!< System Control Space Base Ad...原创 2018-03-18 13:16:05 · 1989 阅读 · 0 评论 -
自制嵌入式操作系统 DAY3
今天实现事件控制块,存储管理以及定时器。1 事件控制块本节代码位于12_event中什么是事件控制块呢?可以这样理解,前面学习我们已经知道,创建一个任务需要给这个任务分配一个任务控制块,这个任务控制块存储着关于这个任务的重要信息。那么,事件控制块就好比任务里的任务控制块。它存储着这个事件的重要信息,我们说创建一个事件(信号,邮箱,消息队列),其本质的过程就是初始化这个事件控制块...原创 2018-03-04 20:13:11 · 738 阅读 · 0 评论 -
自制嵌入式操作系统 DAY2
话不多说,直接进入正题,今天要实现的便是RTOS任务相关的所有功能1 临界区保护本节代码在05_critical下为什么需要临界区保护呢,请看下图: 当task1要对共享资源进行读-改-写操作时,在写回之前被某一事件中断打断切换到task2,而此时task2恰巧也有修改共享资源x的代码,此时task2将共享资源修改成了11,当完成这个操作后,task2交出cpu控制权,此时R...原创 2018-02-21 18:17:22 · 743 阅读 · 0 评论 -
SHA512/384 原理及C语言实现(附源码)
闲来无事,造个哈希轮子,SHA384/SHA512这两者原理及实现一样的,只是输出和初始化的向量不一样。原型hash_val = sha512/384(message). hash_val: SHA512输出是512bit(64个byte),SHA384输出是384bit(48个byte) message: 0 < bits(message) < 2^128,messa...原创 2018-03-03 15:51:40 · 10810 阅读 · 2 评论