- 博客(20)
- 资源 (1)
- 收藏
- 关注
原创 ESP32学习(三)——FreeRTOS学习(2)
直达任务通知是直接发送至任务的事件,而不是通过中间对象(队列,事件组或信号量)间接发送至任务的事件。向任务发送“直达任务通知”会将目标任务通知设置为挂起状态(此挂起不是指挂起任务)。BaseType_t xTaskNotify(//用于将任务通知直接发送到RTOS任务并可能取消该任务的阻塞状态。TaskHandle_t xTaskToNotify,//被通知RTOS任务句柄。BaseType_t xTaskNotifyWait(//等待接收任务通知。ESP定时器(23)5.删除任务避免删除另一个核的任务;
2024-12-07 21:44:59
285
原创 ESP32学习(三)——FreeRTOS学习(1)
临界资源X,正在被C占用,二值信号量下,任务A无法读取X,A进入阻塞态,C继续执行,但B任务优先等级高于C,此时B任务会抢占系统核心,继续执行,等B执行完毕,A还在阻塞态,等待C释放临界资源,C执行完成,释放资源后,才轮到A继续执行,从结果看,虽然任务A的优先等级大于B和C,但是实际上由于任务C对临界资源X的占,任务A的执行优先级却小于B,C。//每次基于当前系统节拍数+100进行延时阻塞。TaskHandle_t *constpvCreatTask,//回传的任务句柄,作为挂起,删除,恢复使用。
2024-12-07 19:41:54
655
原创 ESP32学习(二)——启动流程
该程序出厂就固化在ROM中,不可修改,通过检查IO0脚,选择启动模式;(1)硬件外设和基本C语言运行环境的初始化;(1)加载二级引导程序到RAM运行;(3)执行app_main()函数;(1)从x8000处读取分区表;(2)freertos初始化;bootloader程序。(3)加载应用程序;
2024-12-06 10:03:55
231
原创 ESP32学习(一)—— 程序的存储结构
ESP32 IDF将内部SRAM0(SRAM分为三组:SRAM0,SRAM1,SRAM2)的部分区域(SRAM0和SRAM1)分配为指令RAM中断处理程序,一般放在指令RAM中;static 静态变量 (.data段),或初始化为0(.bss段,一般是数值为0的全局变量)通过RTC_NOINIT_ATTR属性宏存放在该存储器中的数据在深度睡眠模式中醒来数值不变;如果一个函数没有被显示的声明放在IRAM或RTC存储器中,则它会存储在flash中。深度睡眠模式醒来时必须要执行的代码存储在RTC快速存储器中;
2024-12-06 09:53:25
355
原创 WIFI理论知识
(3)BAS(后台认证服务器):某些情况下(如企业级应用)Authenticator并不真正处理身份验证,它仅仅将验证请求发给后台认证服务器去处理;(1)Authenticator(验证者):无线网络中的AP,响应认证请求的实体;(2)Supplicant(验证申请者):无线网络中的STA,发起验证请求的实体;Wi-Fi是一个认证名称,认证用于测试无线网络设备是否符合IEEE-802.11系列协议的规范;):负责AP间的相互通信,掌握移动式STA的行踪,将MAC帧数据(Frame)转送到目的地;
2024-12-02 17:40:29
918
原创 捋清楚MCU上内存的分类和关系
按块读取擦写,一块一般为512Byte,一般用于存储系统固件和用户配置信息,NAND Flash不支持XIP(eXecute In Place,本地执行)功能。,NORFlash数据线和地址线分开,可以像RAM实现随机寻址,读取任意一个字节,可以节省SRAM的容量,但是擦除需要按块擦除;数据保留时间短,需要一直进行电路刷新电路才能保存数据,SRAM>速率>ROM,但是比SRAM便宜很多;传输速率很快,只要一直上电就可以保持数据,无需刷新电路,集成度低,贵;分析:是否NORFlash能够完全替代SRAM?
2024-11-25 15:20:19
1037
原创 关于STM32存储、内存分析(为何从0x8000起始)
(1)串口烧录:需要从STM公司提前烧录在系统存储器上的Bootloader进行引导进入烧录模式,此时系统的必须要将0x0000 0000重映射(再次映射)到系统存储器之前被映射的0x1fff ffff-0x1fff 7a0f存储位置。所以我们按原先规划的主Flash空间起始地址0x0800 0000进行下载,下载完成后,重新设置启动模式,从主Flash启动,将0x0000 0000重映射(再次映射)到原先定义的0x0800 0000上就可以正常从主Flash上启动了;关于图上的几个问题(图从左往右看)
2024-11-25 11:41:52
598
原创 ESP32 开发IDF开发(一)工程目录结构分析
3.ESP-IDF中包含了大量的组件,用户工程只需在CMakeLists.txt中使用REQUIRES或PRIV_REQUIRES指明依赖关系,编译系统会自动找到组件进行编译链接;3.默认分区不能满足需求,可在目录下添加自定义分区表partitions.csv,并在menuconfig中选择自定义的分区表;1.工程所有组件的配置文件,编译系统自动生成,可以通过idf.py menuconfig进行修改并重新生成;1.main可以视为一个特殊的组件,默认依赖所有搜索路径中的组件;-main【入口程序】
2024-11-22 15:16:35
207
原创 Linux驱动学习-设备树-20220411
设备树的作用是代替device.c来描述硬件。paltform的匹配方式不变,而且使用设备树,对硬件的改动就不需要去改动device.c重新编译到内核中,而是可以直接通过bootloader传递给内核,所以设备树也是platform平台设备驱动的一部分,是platform平台设备驱动框架的一种优化编写形式。1. dts ,dtsi ,dtc , dtbdts:设备树文件;dtsi:通用设备树文件;dtc:设备树编译器dtb:设备树编译器编译设备树文件最终生成二进制文件2.新增dt
2022-04-11 23:53:12
1211
原创 Linux驱动学习-平台设备驱动probe函数-20220410
1.最简单的杂项设备/** @Descripttion: 最简单的杂项设备驱动* @version:* @Author: topeet*/#include <linux/init.h>#include <linux/module.h>#include <linux/miscdevice.h>#include <linux/fs.h>struct file_operations misc_fops={ .owner = THIS
2022-04-10 18:13:22
3887
原创 关于结构体内嵌结构体的赋值方法
以下三种内嵌结构体的赋值的区别:A struct device_driver beep_device_driver = { .name = "beep_test", .owner = THIS_MODULE, }; struct platform_driver beep_platform_driver ={ .probe = beep_probe, .remove = beep_remove, .driver...
2022-04-09 15:13:12
3677
1
原创 Linux驱动学习-platform平台设备注册(2)-20220408
将驱动模块复制到开发板nfs挂载目录下,insmod beep_device.ko进行安装报错表示:加载的树外模块污染了内核。从这段描述可以猜到,这是我们没有把此驱动模块加入到Kconfig树导致的,即make menuconfig的配置选项中没有此驱动。此时这个驱动模块仍能正确加载和使用。如果我们只是学习怎么写驱动,不用管他就行;如果我们是正式地写驱动,那么把驱动信息加入到Kconfig树中是必须的,这样我们可以通过配置内核来决定哪些加载驱动,系统也不会再报loading out-of-tree
2022-04-08 23:37:35
642
原创 Linux驱动学习-platform平台设备注册(1)-20220407
重要的头文件:<linux/init.h> #初始化头文件<linux/module.h> #模块注册注销头文件<linux/patform_device.h> #平台文件注册注销头文件1.平台总线注册一个devicedevice.c里面写的是硬件资源:寄存器地址,终端号,时钟等硬件资源;struct platform_device 结构体:{const char *name ;#平台总线进行匹配的字符串,/sys/bus/...下生成对应文件
2022-04-07 23:12:28
841
原创 Linux驱动学习-编译-20220406
在源码目录下执行make指令在此之前需要做一些准备:1.安装make工具和一些依赖2.交叉编译器配置export CROSS_COMPILE=/work/rk3399/rk3399_linux_sdk_v2.0/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-#编译器路径配置export ARCH=arm64#编译器平台选
2022-04-06 22:14:38
635
原创 Linux驱动学习-vim工具配置-20220405
1.vim配置文件:【~/.vimrc】没有就新建一个进行配置2.vim插件管理器:【vimplug】安装地址:https://github.com/junegunn/vim-plug下载此项放置到~/.vim/autoload/目录下,没有这个文件夹就新建一个放进去将下列加入~/vimrc配置文件中call plug *****begin() 插件启用 Plug 'Valloric/YouCo...
2022-04-05 18:59:37
890
原创 Linux驱动学习-开发板nfs挂载-20220404
(1)VMware安装Ubuntu20.4虚拟机,配置网络选项挂载开发板NFS虚拟机编制配置后,虚拟机网络图标消失百度解决方案:如下操作:sudo service network-manager stopsudo rm /var/lib/NetworkManager/NetworkManager.statesudo service network-manager start (实际到这一步就已经成功显示网络图标)sudo gedit /etc/NetworkManager/Net
2022-04-04 23:04:47
1630
1
原创 path.sh_v1.0
#!/bin/bash#OUT_PATH= "/home/xs/桌面/path.txt"SCODE_PATH="/work/K7S/S/"FILE_NAME="test.txt"CODE1_START="start"CODE1_END="end"grep $CODE1_START $FILE_NAME |grep $CODE1_END | tee /home/xs/桌面/path.txtchmod 777 /home/xs/桌面/path.txtOUT_PATH="/home/xs/桌面/p
2022-02-10 23:29:35
570
NordicSemiconductor.nRF_DeviceFamilyPack.8.15.0.pack
2022-02-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人