- 博客(18)
- 资源 (4)
- 收藏
- 关注
原创 IAR CortexM3&M4 启动文件MSP获取分析
从M3权威指南中关于复位序列的描述可以得知,复位后硬件自动将0x0000_0000处的值传给MSP,将0x0000_0004传给PC。PC会将数据视作地址,从给定的地址取值令开始执行。我们知道传入PC的地址是复位中断处理函数的地址。后面就是一系统初始化,直到main运行。但不是很了解MSP如何获取了正确的栈地址。例如如下的启动文件,可以看到向量表中首地址定义的是 DCD sfe[CSTACK].我们根据理论,这个的值必然就是栈底地址。接下来,我们分析如何实现该值的获取。
2023-08-29 11:22:16
435
原创 cuda kernel printf不打印的原因:编译为x86导致
1,GPU算力适配问题*在按照的cuda SDK中C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.5\0_Simple\simplePrintf默认在该路径下的解决方案,可以打印出本机GPU的算力信息所以我自己工程里配置为612 示例代码首先这个代码肯定可以运行。所以如果你运行不出来,不是代码问题。是配置问题。#include "stdio.h"#include "cuda_runtime.h"__global__ void
2022-05-18 16:39:50
2413
1
原创 《操作系统真象还原》第九章 多线程调度
1,前言上一节我们分析了线程是如何被调用执行的。本节将分析多个线程调度的实现方式。在分析之前,我们可以根据已有的知识去宏观的理解可能用的知识点。1,既然要实现多线程调度,肯定要对多线程管理。这里便涉及到了队列,分别是就绪队列和全部线程队列2,线程调度应该是由时钟中断驱动的,总结:完整的调度过程需要三部分的配合1,时钟中断处理函数2,调度器schedule3,任务切换函数switch_to2,重点流程分析1,时钟中断部分/* 时钟的中断处理函数 */static void intr_ti
2022-04-29 17:53:31
1481
2
原创 《操作系统真象还原》第九章 在内核空间实现线程
1,前言开始之前我想说明一下,这系列的文章有什么意义?读书本就是一个输入到理解,再输出的过程。我不是简单的罗列书中的知识。写书的人为了兼顾跟多的读者,书中的铺垫信息过多。对我复习其实是干扰。我需要的是核心知识点的学习理解。所以这一系列。我只记录核心的重难点知识。简单概念只列关键词。废话太多了,本章的难点应该是在线程的实现上。略过前的概念,直接到代码实现部分。2,简单的PCB及线程栈的实现1,数据结构enum task_status;线程状态struct intr_stack;中断栈struct
2022-04-29 17:36:57
1314
原创 《操作系统真象还原》第八章 位图的数据结构与操作
1,概念介绍用途就是为了管理内存页,一比特对应一页,即bit对应4KB。因为管理内存的位图本身也需要空间。所以我们要尽量压缩管理代价。一个简单的运算:1K的位图可以管理多大的内存空间呢?1Kb x 8bit x 4KB = 32Mb。所以1k的位图可以管理32M的内存空间。2,数据结构struct bitmap { uint32_t btmp_bytes_len;//所占用的空间长度,单位:字节 uint8_t* bits;};3,操作及实现思路void bitmap_init
2022-04-29 17:28:08
737
原创 《操作系统真象还原》第五章 用虚拟地址访问页表
操作系统之二级页表_是啊新啊的博客-CSDN博客之前的文章里总结起来就是CPU通过页部件的“三步曲”完成虚拟地址到物理地址的转换关系。即从CPU的视角是: 第一步:取虚拟地址的高10位,得到页表首地址;第二步:取虚拟地址的中10位,得到物理页地址;第三步:将虚拟地址中的低12位与物理页地址合并,即为最终的物理内存地址。我们正是利用这种“呆板”机制实现虚拟地址访问页表。即,每一个虚拟地址的转换必须经过这三步。 比如如何实现利用虚拟地址访问...
2022-03-27 20:41:08
4583
原创 《操作系统真象还原》第八章内存管理 优化makefile和分页机制再理解
1,Makefile的优化 书里面对C文件到O文件的编译处理的不是很好,每次新增文件都需要自己手动加入。主要涉及到一些字符处理函数: 1,patsubst$(patsubst <pattern>,<replacement>,<text>)功能:查找<text>中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式<pat...
2022-03-13 22:18:33
460
原创 《操作系统真象还原》第五章 二级页表原理
输入:32位虚拟地址 0x01234567输出:32位的实际物理地址二级页表地址拆分规则:高10位为页目录(二级)索引,中间10位为(一级)页表索引。最后低12位为物理页(实际物理地址)内偏移量。举例说明:输入虚拟地址 0x01234567 对其拆分二进制,我们知道十六进制到二进制是1对4位的关系,即0x0 =0000 ,0x1=0001 ,0x2=0010 ,所以拆分得到 0000 0001 0010 0011 0100 0101 0110 0111这样分别得到页目录(二级页表)...
2022-03-03 11:29:54
3558
2
原创 EC20相关数据及应用手册分享 百度网盘自取
链接:https://pan.baidu.com/s/1RES6gNfs08M5GyNpQ2mg0Q提取码:70rz复制这段内容后打开百度网盘手机App,操作更方便哦
2020-10-14 12:31:26
1247
1
原创 STM32 EC20 OTA 程序设计 Bin文件错误与改进
STM32 OTA 程序设计 V0.1流程图Flash 区域划分视图BOOT起始地址 0x0800 0000 50kAPP 1区地址 0x0800 c800 100kAPP 2区地址 0x0802 5800 100kBoot参数区地址 0x0803 e800 1kBootLoader区代码设计程序空间大小为20k,地址分配为0x0800 0000到0x0800 5000.主要实现功能1,读写flash2,实现程序跳转,重定义中断向量表3,标记A,B代码区域,根据标志位确
2020-07-06 15:15:19
1910
7
原创 STM32 串口空闲中断+DMA读EC200中bin文件 提前断包问题分析与解决
前言最近(2020年6月20日)正在开发基于STM32的OTA升级功能。前段时间完成了EC200通过FTP成功取到了bin文件,按照计划下一步是从EC200中取出文件到STM32的flash中,但是在read过程中出现了问题问题参考EC200 FILE应用文档指导。关于AT+QFREAD=1,10的回复报文CONNECT 空格 100D 0A【文件数据】0...
2020-06-20 22:33:24
1492
2
原创 STM32 OTA程序设计 之 4G模块EC20 FTP服务器获取升级文件 远程升级
测试4G模块使用FTP命令及反馈信息分析[10:51:05.364] AT[10:51:05.364] OK[10:51:05.364] AT+QFLDS=?[10:53:01.120] OK[10:53:01.120] AT+QFLDS=“UFS”[10:53:24.871] +QFLDS: 499712,917503[10:53:24.871][10:53:24.871] OK[10:53:24.871] AT+QFLDS[10:55:13.237] +QFLDS: 0,0[10:
2020-06-14 10:24:10
7594
6
SSU_bootload.zip
2020-07-06
Quectel_EC20_R2.0_FTP_AT_Commands_Manual_V1.0.pdf
2020-06-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人