自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 资源 (5)
  • 收藏
  • 关注

原创 linux driver - devres

由于底层驱动在卸载过程经常会有因为没有释放资源而导致的内存泄漏发生。为了解决这个问题,内核引入了devres子系统帮助驱动程序实现资源的自动释放。devres子系统通过在struct device里面增加一个devres list head,将为设备分配的资源关联其上,当设备detach时,设备框架通过devres的release帮助函数将和该设备关联的资源统一释放 。devres也为每种资源提供的单独释放的接口,这样驱动程序可以在运行时不必等到设备卸载就可以主动释放某些资源。devres代码路径:dr

2024-03-19 14:36:14 938

原创 linker list

linker list使用

2024-02-05 17:42:20 865

原创 ffmpeg build

【代码】ffmpeg build。

2024-02-01 14:49:18 374

原创 CMakeLists.txt demo

cmake demo

2024-01-19 09:29:07 381

原创 nuttx sim build

make产生genromfs,复制到/usr/bin。第一次编译可能有错误,根据提示安装缺少的工具即可。

2023-11-25 21:58:39 182

原创 Bookmarks

微软 Bing 搜索 - 国内版百度在线翻译Android模拟器——QEMU - 李亚锋老师 - 博客频道 - CSDN.NETGraphics | Android DevelopersWelcome to Android | Android Open SourceAndroid Training | Android DevelopersApp Components | Android DevelopersGoogle Java StyleUsing Eclipse | Android Developers

2023-11-15 07:33:26 467

原创 lvgl示例程序自动提取及播放

lvgl内置了大量示例程序,但是模拟器每次只能演示一个示例。通过脚本提取示例入口函数表. 在main.c中增加一个按钮,每点击一次,找回一个示例程序运行。

2023-11-06 15:05:22 247

原创 lvgl overview

屏幕上的图像元素以单根对象树管理,默认情况下根对象就是显示器的活动显示器——act_scr,在显示器注册时创建,参见lv_disp_drv_register。应用也可以自己创建screen的根对象,需要显示时,通过lv_scr_load(scr)将其配置为当前显示器的活动屏幕对象。lv_obj_t和lv_obj_class_t是lv用来实现类似cpp的基于类的面向对象的软件设计的基础结构类型。匹配失败,则从父节点的样式数组继续匹配,直到根节点,如果仍然没有匹配,则采用系统默认样式。如:按下+焦点+选中。

2023-10-13 13:59:54 103

原创 gitlab runner

register在项目的主页面左侧边框点击 ‘设置’选择‘CI/CD’;展开runner,将网址和 令牌信息注册到runner:run注册之后就可以运行’gitlab-runner run’启动runner,等待gitlab服务器下发job。注册完成后,刷新页面,显示runner信息,点击’、’编辑按钮,勾选‘运行未标记的作业’在项目根目录提交一个 .gitlab-ci.yml 的文件。当提交了以后,就会触发pipeline流水线了。怎样限制自动触发,节省服务器你好! 这是你第一次使用 Markdow

2023-10-11 16:34:28 402

原创 gitlab runner

注册之后就可以运行'gitlab-runner run'启动runner,等待gitlab服务器下发job。在项目根目录提交一个 .gitlab-ci.yml 的文件。当提交了以后,就会触发pipeline流水线了。注册完成后,刷新页面,显示runner信息,点击’、’编辑按钮,勾选‘运行未标记的作业’在项目的主页面左侧边框点击 ‘设置’选择‘CI/CD';怎样限制自动触发,节省服务器。## runner配置。

2023-10-11 16:32:02 563

原创 lds 文件预编译处理

lds文件包含进.c源文件后进行预处理,将预处理结果重新命名为lds。

2023-09-25 16:46:46 103

原创 ffmpeg & ffplay

'-acodec codec_name' 强制指定音频解码器为 "codec_name"'-vcodec codec_name' 强制指定视频解码器为 "codec_name"'-scodec codec_name' 强制指定字幕解码器为 "codec_name"'-t duration' 播放 "duration" 秒音/视频。'-y height' 强制以 "height" 高度显示。'-x width' 强制以 "width" 宽度显示。

2023-09-22 14:20:22 335

原创 git lfs

拉取文件:

2023-09-05 10:17:16 39

原创 【无标题】submodule tag

``/bin/bashthenexit 0fithenfithenfidodone```

2023-05-20 17:06:04 570

原创 ld文件定义符号的使用

连接文件定义的符号在源文件中的引用

2023-03-09 17:29:37 274

原创 数据通信过程的免锁设计

在多核情况下,用自旋锁实现原子操作,在中断里面是可以用的。自旋锁要求每个核持有时间必须尽可能短,否则多核运行都被自旋锁串行化了,多核的性能就体现不出来了。对于uart通信来说,中断处理程序就是其接收buffer唯一的生存者,发送buffer唯一的消费者,这样,它就可以自由的在buffer的一端进行操作,而不会对数据产生影响。环形buffer有一个head和end指针分别用于生产者和消费者操作buffer的输入和输入的其中一端,只要这个环形buffer设计的没问题,就不用担心数据一致性问题。

2023-02-07 14:39:39 333

原创 设置命令行提示符 包含branch信息

设置命令行提示符 包含branch信息

2022-10-18 14:56:56 105

转载 虚拟机virtualbox中挂载新硬盘

在virtualbox中装好Ubuntu后,发现硬盘空间太小,怎样才能增加硬盘容量?设置 -> Storage -> SATA控制器->右击,选择“添加虚拟硬盘”可看到新加的虚拟硬盘,一般名为:Disk /dev/sdb。用ext4格式对/dev/sdb1进入格式化。可以看到新加的硬盘:/dev/sdb1。将新磁盘分区挂载到/work目录下。然后,根据需求创建合适的硬盘。虚拟机virtualbox中挂载新硬盘。查看现有系统的磁盘空间。键入m,可看到帮助信息。选择基本分区,输入:p。

2022-09-26 11:19:59 898

原创 如何确定某个宏定义来自哪个头文件

制造一个错误,让编译器告诉你。

2022-08-30 16:09:31 244

原创 正确使用自旋锁、互斥锁

最近在看alios-things的代码发现驱动程序中大量使用了自旋锁 。如tty.c里面的函数实现都是通过自旋锁来实现对资源的访问保护。看到这里首先会有疑问,自旋锁能保护临界区吗?一般来说,自旋锁是用于多核系统的不同核心之间对同一个数据区的竞争访问,对于同一个核上的不同线程是不具备防护功能的。(网上有文章解析自旋锁是让线程原地等待,并没有突出smp环境下的核间竞争,似乎要达到不关中断情况下实现临界区保护,可能也有这种自旋锁吧,没见过,见过的请在下面留言,谢谢)怀着上述疑问,打开aos_spinlo

2022-06-28 19:20:16 635

原创 虚拟总线设计

虚拟 总线

2022-06-16 10:05:29 290

原创 printf在alios上的实现

components/libc_stub/newlib_stub.c_ssize_t _write_r(struct _reent *ptr, int fd, const void *buf, size_t nbytes)通过fd的值区分 输出 类型socket,file,std} else if ((fd == STDOUT_FILENO) || (fd == STDERR_FILENO)) {如果是标志输出,则通过当前控制台输出。...

2022-05-25 19:15:50 80

原创 alios 系统配置转存到一个头文件

用si查看alios的代码由于alios的编译配置项定义在yaml文件中,si不能自动识别程序中使用的各种宏定义。aos config | sed "s/^/#define &/g" | sed "s/=/ /g" > aos_config.h通过上面指令可以将工程配置转存到一个头文件中,这样si查看代码就比较方便了。...

2022-03-22 14:39:08 155 1

原创 USB描述符

USB描述符有设备描述符、标准配置描述符、接口描述符、端点描述符、字符串描述符,HID设备有HID描述符、报告描述符和物理描述符描述符类型:设备描述符bcdUSB:0x0200-usb2.0;0x0101-usb1.1配置描述符1、一个USB设备可以有多种配置,这一点可以从设备描述符的最后一项得到:bNumConfigurations:可能的配置数,一般单一设备该值都是1.2、一个USB设备至少要有一个配置描述符。3、配置描述符不会单独发送给USB主机,通..

2022-02-08 15:46:53 5227

原创 编译出现undefine reference to ts_**问题解决

查找ts_*所在位置,发现在tslib目录下。查看tslib已经编译成功;查看出错工程的makefile,看到 libts链接选项被一个CONFIG_TSLIB_SURPPORT feature控制;打开menuconfig,搜索这个feature定义路径;打开这个feature重新编译。ok!...

2021-12-20 16:12:38 270

原创 alithings栈回溯

栈回溯原理:利用寄存器内容以及sp指向的栈数据信息和pc指向的程序指令信息。Thumb指令和arm指令两种情形。Thumb指令: 获取sp和pc值 根据call入口压栈特征,通过pc回溯代码,找到push或者stmdb sp! ..指令,根据指令特征判断栈帧尺寸; 根据上一步获得的指令位置前溯代码,查找sub sp指令(栈临时变量)修正栈帧尺寸; 根据栈帧尺寸更新sp和pc值 根据pc(lr)值判断是否到达栈底,如果到达栈底,则结束回溯,否则进入1重新读取下一个栈帧。

2021-12-09 15:46:20 149

原创 pthread 条件等待及取消点

#include <pthread.h>#include <unistd.h>static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;struct node {int n_number;struct node *n_next;} *head = NULL;/*[thread_func]*/s...

2021-11-29 16:34:57 403

原创 linux kernel内存申请

kmalloc()、kzalloc()、vmalloc() 的区别是:kzalloc 是强制清零的 kmalloc 操作;(以下描述不区分 kmalloc 和 kzalloc) kmalloc 分配的内存大小有限制(128KB),而 vmalloc 没有限制; kmalloc 可以保证分配的内存物理地址是连续的,但是 vmalloc 不能保证; kmalloc 分配内存的过程可以是原子过程(使用 GFP_ATOMIC),而 vmalloc 分配内存时则可能产生阻塞; kmalloc 分配内存的开

2021-11-09 14:47:49 348

原创 RTThread SMP 不同状态的线程存放位置

rt_thread_priority_table[RT_THREAD_PRIORITY_MAX] 保存没有绑定的线程链表pcpu->priority_table[RT_THREAD_PRIORITY_MAX] 保存和cpu绑定的线程链表以上是就绪线程的存放列表pcup->current_thread存放当前运行线程挂起线程,存放在所等待的内核资源对象的等待链表里...

2021-09-30 15:06:37 1900

原创 arm gic

假如我们要将 CP15 中 C0 寄存器的值读取到 R0 寄存器中,那么就可以使用如下命令:MRC p15, 0, r0, c0, c0, 0CP15 协处理器有 16 个 32 位寄存器, c0~c15寄存器 作用 c0 寄存器可以获取到处理器内核信息; c1 寄存器可以使能或禁止 MMU、 I/D Cache 等; c12 寄存器可以设置中断向量偏移; c15 寄存器可以获取 GIC 基地址。 ...

2021-09-30 13:22:44 66

原创 多核自旋锁

ldrex、strex 独占存储指令pld 预加载指令owner,nextowner指示自旋锁当前拥有者序号,next 表示当前线程等待序号每次进入等待next序号加一;如果next和owner不等,则循环查询等待。。。每次释放锁owner加一,指示下一个等待线程可以继续运行...

2021-09-26 18:31:25 633

原创 vscode 目录隐藏

设置里面搜索exclude,添加需要隐藏的目录到files:exclude即可。如果目录多个文件夹需要隐藏,每个独立添加比较麻烦可以将需要隐藏的目录转移到一个特殊目录下,比如名为exclude的目录添加过滤规则 */exclude/这样配置后,任何目录下名为exclude的目录都会被自动过滤...

2021-09-10 17:11:17 693

原创 屏障指令 - 防止优化导致错误

处理器流水线设计、编译器优化设计,为了获得更高性能,有时程序代码顺序会被重新编排。这种 重编排有时 会带来意外的程序 错误。如:preempt_disable();function_which_must_not_be_preempted();preempt_enable();可能如下重排效果:function_which_must_not_be_preempted();preempt_disable();preempt_enable();也可能如下重排效果:preempt_dis

2021-09-09 10:30:40 362

原创 cache友好的代码

计算机存储模型是寄存器-cache-内存-外存当一条指令访问外存上的数据会发生什么?内存访问失效异常失效异常处理将外存数据加载到内存cache管理器将内存数据加载到cache寄存器加载cache数据完成加载-------以上过程如果频繁发生,则系统性能严重降低os设计各种机制预防这种情况发生页缓存-预加载外存数据cache-批量加载内存数据----------编程-cache友好编程,尽量避免长跳转的使用...

2021-09-02 10:41:27 243

原创 华为IoT平台

IoT Device SDK Tiny是部署在具备广域网能力、对功耗/存储/计算资源有苛刻限制的终端设备上的轻量级互联互通中间件,您只需调用API接口,便可实现设备快速接入到物联网平台以及数据上报和命令接收等功能,相关集成指导请参见端云互通组件开发指南。以前做过基于华为的NBIoT通信模组做的园区抄表系统,模组用的是lite-os,LwM2M/COAP,支持OTA固件升级。接入服务器和 应用服务器都是自建的,没有走华为的云。那时还没有 鸿蒙,华为的物联网解决方案称为HiLink。后...

2021-08-31 19:09:45 1081

原创 Linux内核模块的面向对象设计

通过私有数据实现对象的继承关系向子系统注新对象时,新对象的私有数据和框架层的基础对象复合成新对象。基础架构一般会提供create方法,实现这个对象的创建并设置私有数据。驱动模块得到创建的新对象之后进一步设置私有数据。下面是一个虚拟无线网络设备的创建过程:/* Function that creates wiphy context and net_device with wireless_dev.* wiphy/net_device/wireless_dev is basic int.

2021-08-27 11:07:50 522

原创 ubuntu 安装vscode

1.sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make2.sudo apt-get update3.sudo apt-get install ubuntu-make4.sudo umake ide visual-studio-code第四步如果遇到ssl错误,可以重新安装ca证书sudo apt-get install --reinstall ca-certificates...

2021-08-21 13:17:16 106

原创 RTOS bookmark

https://blog.csdn.net/HaaSTech/article/details/118065991

2021-07-16 15:19:26 310 1

原创 信號量 和 互斥量

信號量量 對動態資源管理,生產者和消費者,釋放信號,資源增加,獲取 信號,資源減少。資源獲取 不到,則挂起等待。释放资源,如果有 等待者,则唤醒一个,否则信号计数加一。互斥量 管理唯一资源 资源获取先判断释放已经用于资源,有则计数加一,返回,否则,尝试占用资源,成功,则返回,否则,挂起。释放资源:计数减一,计数非0,返回;否则,清除占用标记,如果有等待线程,则唤起一个。...

2021-07-10 15:42:15 76

原创 HAAS 物联网解决方案的终极目标?

互联网巨头投入大量财力打造的物联网平台都无一例外的免费开放给外界使用,目的是什么?简单说就是引流,就是要把互联网的增值业务引入到传统的终端设备上,第一步就是要把设备生产商引入到自己的生态里面。以冰箱为例,冰箱的状态可以被服务端采集,服务端可以推送信息给绑定的手机或者直接返回给支持人机交互的冰箱设备。传统家电企业掌握了设备制造生产销售,在物联网时代,还需要掌握服务的运营。要支持服务落地,首先需要设备端进行设计改造。如何建设物联网平台,科技巨头阿里、华为、腾讯都给出了完整解决方案。传统家

2021-06-01 16:56:14 435 5

蓝牙模块, datasheet

蓝牙模块, datasheet

2022-02-22

Peer-to-Peer Multimedia Sharing based on Social Norms.pdf

Introduction. With the explosion of communication technologies and multimedia signal processing,... System model. We consider a P2P multimedia sharing network such as Chainsaw [3]... Optimal design of social norm based protocols. Protocol designs for networks with altruistic...

2019-07-19

nattypetester

nat类型检测工具,用以检测网络的NAT类型的工具。使用方法很简单,解压之后运行NatTypeTester.exe ,点击test,会给出当前网络的NAT类型。

2019-01-03

zigbee zcl api

ZCL是Zigbee1.1(Zigbee2006)协议版本中增加的一个重要的部分。在Zigbee中,一个簇群就是一个容器,在容器中以命令结构体包含了一个或多个属于某个应用剖面的属性/消息,不管应用剖面如何,相同的设备(比如开关)拥有相同的定义和功能。

2017-10-24

RSS reader for hacksnews

一个简单的RSS reader,android平台,XmlPullParser

2012-12-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除