自定义博客皮肤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)
  • 资源 (16)
  • 收藏
  • 关注

原创 开发板上搭建vsftpd服务器

开发板上搭建vsftpd服务器

2023-02-19 17:18:09 735

原创 Linux驱动——MMC/SPI/I2C

Linux驱动——MMC/SPI/I2C

2023-02-02 17:57:37 257

原创 Linux驱动——ALSA

ALSA_control&dapm宏定义小狼@http://blog.csdn.net/xiaolangyangyangControl宏定义:SOC_SINGLE_VALUESOC_SINGLE_VALUE_EXTSOC_SINGLESOC_SINGLE_TLVSOC_DOUBLESOC_DOUBLE_RSOC_DOUBLE_TLVSOC_DOUBLE_R_TLVSOC_DOUBLE_S8_TLVSOC_ENUM_DOUBLESOC_ENUM_SINGLESOC..

2022-05-03 18:41:15 2240

原创 heap_5

heap_5小狼@http://blog.csdn.net/xiaolangyangyang heap_5是将.bss段的mem作为内存管理基础(一大片全局变量),支持多个不连续的内存块,经过函数vPortDefineHeapRegions()执行后,将多个block按地址从小到大使用链表串联起来,如下图所示:内存申请使用pvPortMalloc()函数,该函数在内存块链表中依次查找size大于待申请长度的block,如果存在这样的block,将该block从链...

2022-04-22 16:44:30 663

原创 Linux驱动——PCI

PCI设备小狼@http://blog.csdn.net/xiaolangyangyangPCI设备枚举过程:(PC系统中BIOS和OS均实现了枚举过程,linux可通过内核PCI access mode配置选择使用OS还是BIOS进行枚举,嵌入式系统中枚举过程由linux驱动实现)1、PCI控制器是通过读取配置空间寄存器的VID检测是否存在bridge或device,读取值为0xFF则为空;2、PCI控制器在bus上(从bus0-device0-func0开始)扫描br..

2022-04-17 09:54:38 2832

原创 嵌入式简答

嵌入式简答小狼@http://blog.csdn.net/xiaolangyangyangXIPC:cadance自带的多核通信模块,支持同步及互斥等源语;XAF:xtensa audio framework,主要实现components;XIP:Nor Flash芯片内执行;xtensa中断优先级:分为level1/2,优先级固定,中断向量固定,多个中断线,硬件自动压栈;arm内核区分arm和thumb指令的方法:指令中最高位标记指令类型;栈回溯原理:1、不带操作系统,将栈

2022-04-07 16:37:38 624

原创 cortex-m3 & freertos

cortex-m3小狼@http://blog.csdn.net/xiaolangyangyangARMv7-M架构Thumb2指令集操作模式/特权模式内建的嵌套向量中断控制器(NVIC) 中断向量化(根据中断号快速查找表) 中断硬件自动压栈 中断优先级动态设置 不可屏蔽中断(NMI) 软件中断 系统异常存储器保护单元(MPU)睡眠模式/深度睡眠模式(WFI/WFE)双堆栈指针(MSP/PSP)连接寄存器(LR)指令总线+...

2022-02-09 20:22:47 3925

原创 代码重定位——基本原理及实现

Uboot运行地址和装载地址区别小狼@http://blog.csdn.net/xiaolangyangyang 参考文献:代码重定位解析加载地址和运行时地址 & 代码重定位 (2020)

2022-01-11 13:56:39 2349 2

原创 STM32开发笔记(四)——FreeRTOS

STM32开发笔记(四)——FreeRTOS小狼@http://blog.csdn.net/xiaolangyangyang一、FreeRTOS调度原理 FreeRTOS调度分为时间片调度和抢占调度两种。 时间片调度:在tick(周期1ms)到来时会检查线程时间片是否用完以进行调度; 抢占式调度:1、在tick到来时,检查是否有处于就绪态的高优先级线程以完成调度;2、使用定时器中断实现了us级延时的线程,在定时器中断中进行调度;3、高优...

2021-11-18 08:24:48 775

原创 ARMv8体系架构函数调用过程

ELF目标文件分段结构小狼@http://blog.csdn.net/xiaolangyangyang ARM架构下,函数参数是通过r0~r4寄存器传递的,如果参数超过4个,就要借助于栈进行参数传递。int func(int a1, int a2, int a3, int a4, int a5, int a6){ return a1 + a2 + a3 + a4 + a5;} int main(void){ func(1, 2, 3, 4, 5, 6); ...

2021-10-20 22:38:10 1744 1

原创 代码重定位——ELF分段、API/ABI、指定函数(变量)地址、分散加载、函数调用过程、动态加载

ELF目标文件分段结构小狼@http://blog.csdn.net/xiaolangyangyang一、采用分段结构的优点 1、分段易于管理,对于代码段,是只读的,而数据段可读写; 2、提高cache命中率,Icache与Dcache分开,分别读取代码段和数据段的数据; 3、未初始化数据放在.bss段,生成bin文件时不包含该部分,只在startup.s的指令中保存.bss段的__bss_start和__bss_end地址,减小bi...

2021-09-02 23:30:07 1260

原创 JTAG/JLINK

JTAG/JLINK小狼@http://blog.csdn.net/xiaolangyangyang一、JTAG与JLINK的区别 JTAG:边界扫描链,硬件上有4根线,分别是TMS/TCK/TDI/TDO,协议上属于硬件协议; JLINK:将串口协议转换成JTAG协议的硬件模块,串口端支持JLink cmd,JTAG段支持JTAG协议二、JTAG用途 JTAG有两种用途: 1、芯片可测试方法DFT的一种,用于测...

2021-08-20 16:51:35 3648

原创 使用git进行版本管理

STM32开发笔记(二)——通过map文件了解堆栈分配(STM32、MDK5)--避免堆栈溢出小狼@http://blog.csdn.net/xiaolangyangyang

2021-06-02 16:01:53 180

转载 STM32开发笔记(三)——通过map文件了解堆栈分配(STM32、MDK5)避免堆栈溢出

STM32开发笔记(二)——通过map文件了解堆栈分配(STM32、MDK5)--避免堆栈溢出小狼@http://blog.csdn.net/xiaolangyangyang 在最近的一个项目的开发中,每当调用到一个函数,程序就直接跑飞。debug跟进去看不出什么逻辑错误,但发现函数内局部变量声明之后,全局变量的值被清零,后来查看局部变量地址已经超出栈的范围,于是确定是栈溢出。如果不稍微了解一下堆栈,在开发过程中可能碰到各种奇怪的错误。.map和startup.s文...

2021-05-22 18:10:47 1404

原创 ARM内核架构(一)

ARM内核架构(一)小狼@http://blog.csdn.net/xiaolangyangyang

2021-05-19 09:55:19 1343

转载 STM32开发笔记(二)——动态模块加载和ELFLoader

STM32开发系列——动态模块加载和ELFLoader小狼@http://blog.csdn.net/xiaolangyangyang动态模块加载的好处动态模块加载的好处很多,例如,当你升级一个系统的时候,可以只升级一个模块,而不必升级整个系统。你可以把不同的模块放在不同的介质上,并实施不同等级的保护,例如BIOS部分进行写保护。有些系统允许用户进行二次开发,这个时候几乎一定是需要动态加载功能的,因为你不希望用户需要链接整个系统才能够进行二次开发,而且你可能希望支持多个用户模块...

2021-05-18 23:24:27 3781

转载 Linux内核原语(十一)——互斥锁MUTEX实现信号量SEMA

Linux内核原语(十一)——互斥锁MUTEX实现信号量SEMA小狼@http://blog.csdn.net/xiaolangyangyang/* ======================== SYNCHRONISATION ========================= *//* Init semaphore to 1 or 0 */void bsem_init(bsem *bsem_p, int value) { if (value < 0 ...

2021-05-18 16:43:23 340

转载 Linux内核原语(十)——RCU机制

Linux内核原语(十)——RCU机制小狼@http://blog.csdn.net/xiaolangyangyangRCU 的全称是(Read-Copy-Update),意在读写-复制-更新,在 Linux 提供的所有内核互斥的设施当中属于一种免锁机制。在之前讨论过的读写自旋锁(rwlock)、顺序锁(seqlock)一样,RCU 的适用模型也是读写共存的系统。读写自旋锁:读者和写者互斥,读者和读者共存,写者和写者互斥。(偏向读者) 顺序锁:写者和写者互斥,写者直接打断读者...

2021-05-18 16:26:40 704

转载 Linux内核原语(九)——互斥体(mutex)

Linux内核原语(九)——互斥体(mutex)小狼@http://blog.csdn.net/xiaolangyangyang互斥体是一种睡眠锁,他是一种简单的睡眠锁,其行为和 count 为 1 的信号量类似。(关于信号量参考:Linux内核原语(八)——信号量(semaphore))。互斥体简洁高效,但是相比信号量,有更多的限制,因此对于互斥体的使用条件更加严格:任何时刻,只有一个指定的任务允许持有 mutex,也就是说,mutex 的计数永远是 1; 给 mutex 上...

2021-05-18 16:12:40 637

转载 Linux内核原语(八)——信号量(semaphore)

Linux内核原语(八)——信号量(semaphore)小狼@http://blog.csdn.net/xiaolangyangyangLinux Kernel 除了提供了自旋锁,还提供了睡眠锁,信号量就是一种睡眠锁。信号量的特点是,如果一个任务试图获取一个已经被占用的信号量,他会被推入等待队列,让其进入睡眠。此刻处理器重获自由,去执行其他的代码。当持有的信号量被释放,处于等待队列的任务将被唤醒,并获取到该信号量。从信号量的睡眠特性得出一些结论:由于竞争信号量的时候,未能拿...

2021-05-18 15:37:58 738

转载 Linux内核原语(七)——顺序锁(seqlock)

Linux内核原语(七)——顺序锁(seqlock)小狼@http://blog.csdn.net/xiaolangyangyang上一章中讲到的读-写自旋锁,更加偏向于读者。内核提供了更加偏向于写者的锁 —— seqlock这种锁提供了一种简单的读写共享的机制,他的设计偏向于写者,无论是什么情况(没有多个写者竞争的情况),写者都有直接写入的权利(霸道),而读者呢?这里提供了一个序列值,当写者进入的时候,这个序列值会加 1,而读者去在读出数值的前后分别来 check 这个值,便...

2021-05-18 15:32:12 305

原创 STM32开发笔记(一)——SysTick中断

STM32开发系列——SysTick中断小狼@http://blog.csdn.net/xiaolangyangyangSysTick定时器有两大用途:没有操作系统:只用于精准延时 操作系统(Ucos2、Ucos3、Freertos):为操作系统提供精准的定时中断(1ms~50ms)作为操作系统滴答SysTick配置:HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq/1000); // SysTick中断频率1KHz// 在Ucos...

2021-05-18 11:52:58 2321

原创 代码重定位——uboot装载地址和运行地址

Uboot开发——运行地址和装载地址区别小狼@http://blog.csdn.net/xiaolangyangyanguboot移植涉及到底层硬件的设置,因此需要掌握UART、系统时钟频率、NOR FLASH、NAND FLASH、SDRAM、网卡、存储控制器等硬件的功能及配置,这些都可以参照相应开发板的芯片手册来完成,没有什么大的问题。在移植过程中,一直困扰我的是PIC(代码无关性)问题,即运行地址和加载地址的区别,看过网上很多关于这两者的介绍,感觉懂一点,却一直不知所然。在参考大量...

2021-05-18 11:22:24 2279 2

转载 Linux内核原语(六)——读-写自旋锁(rwlock)

Linux内核原语(四)——读-写自旋锁(rwlock)小狼@http://blog.csdn.net/xiaolangyangyang上一章聊到了内核的自旋锁 spinlock 相关的内容,试想这样一种场景:一个内核链表元素,很多进程(或者线程)都会对其进行读写,但是使用 spinlock 的话,多个读之间无法并发,只能被 spin,为了提高系统的整体性能,内核定义了一种锁:1. 允许多个处理器进程(或者线程或者中断上下文)并发的进行读操作(SMP 上),这样是安全的,并且提...

2021-05-17 23:52:29 488

转载 Linux内核原语(五)——自旋锁(Spinlock)

Linux内核原语(四)——自旋锁(Spinlock)小狼@http://blog.csdn.net/xiaolangyangyang内核当发生访问资源冲突的时候,可以有两种锁的解决方案选择:一个是原地等待 一个是挂起当前进程,调度其他进程执行(睡眠)Spinlock 是内核中提供的一种比较常见的锁机制,自旋锁是“原地等待”的方式解决资源冲突的,即,一个线程获取了一个自旋锁后,另外一个线程期望获取该自旋锁,获取不到,只能够原地“打转”(忙等待)。由于自旋锁的这个忙等待的特性,注定...

2021-05-17 23:40:31 1616

转载 Linux内核原语(四)——内存屏障

Linux内核原语(三)——内存屏障小狼@http://blog.csdn.net/xiaolangyangyang编译器有时会对代码做一些优化,例如尝试在保证程序执行正确的前提下修改指令顺序或优化ldr/str指令,让程序执行地更快。但是编译器毕竟不能完全猜透人的心思,有时候它做的优化会导致程序运行不符我们的预期。因此,内核中提供了一些额外的函数,可以插在某段代码里,告诉编译器不要在这里做指令优化。这些函数分为两种:内存屏障:rmb(), wmb(), mb(...

2021-05-17 23:29:12 492

转载 Linux内核原语(三)——原子操作

Linux内核原语(二)——原子操作小狼@http://blog.csdn.net/xiaolangyangyang原子操作,指的是一段不可打断的执行。也就是你不可分割的操作。在 Linux 上提供了原子操作的结构,atomic_t :typedef struct { int counter;} atomic_t;把整型原子操作定义为结构体,让原子函数只接收atomic_t类型的参数进而确保原子操作只与这种特殊类型数据一起使用,同时也保证了该类型的数...

2021-05-17 23:22:49 547

转载 Linux内核原语(二)——简介

Linux内核原语介绍小狼@http://blog.csdn.net/xiaolangyangyang在使用共享内存的程序代码中,为了保护共享资源,放置共享资源的并发访问导致的错误逻辑,需要用到内核同步机制。临界区是访问和操作共享数据的代码段。多个执行线程并发访问同一个资源(读/写),通常是不安全的,为了避免这种隐患,编程人员必须保证这种访问是原子的(不可打断)。造成并发的原因造成并发有多种原因:中断-------------------------...

2021-05-17 23:00:10 290

原创 几种嵌入式操作系统对比

几种嵌入式操作系统对比小狼@http://blog.csdn.net/xiaolangyangyang 调度触发机制 调度策略 系统原语 内存管理 License Linux 系统调用 中断 schedule() 抢占式 时间片 原子操作 内存屏障 Spinlock Semaphore Seqlock Rwlock M...

2021-05-17 22:13:39 541

原创 slab分配机制

http://oss.org.cn/kernel-book/ch06/6.3.3.htmslab分配机制包括:kmalloc(通用缓冲区)、vmalloc(非连续内存管理)、页高速缓存(专用缓冲区)、内存池

2019-09-10 10:43:26 181

原创 Linux下用GDB调试可加载模块

一、需要在编译模块时加入调试信息 #cd /sys/modules/linux # make clean #make COPTS=-g

2019-09-10 10:38:40 220

原创 嵌入式常用文件系统

NAND+Flash文件系统—YAFFS2在Linux下的实现http://wenku.baidu.com/link?url=IbTzaZj3YrpfzfEHRW_l-trTY7T0vyFK3JclJLEUMRPpeTDRKN5yuWfi6o7zY7DndUBrgbGzQtOTQ8kZ7niw56KFh_UZNxtqKDv_Ju5V7ZCjffs2,yaffs2,logfs,ubif...

2019-09-10 10:37:41 424

原创 Linux Kernel Learning

Linux Kernel Learning小狼@http://blog.csdn.net/hot_zcy2012探索 Linux 内存模型kernel 启动过程之二, arch/arm/kernel/head.Skernel 启动过程之一, uimge, zimage,arch/arm/boot/compressed/head.SLinux节点和内存管理区的初始化Linux内存布局Linux内存管...

2018-06-14 09:07:15 312

原创 编码器解算ROS里程计数据

编码器解算ROS里程计数据小狼@http://blog.csdn.net/xiaolangyangyang

2017-11-13 10:56:10 6282 3

原创 机器人算法SLAM

机器人算法SLAM小狼@http://blog.csdn.net/xiaolangyangyang

2017-11-10 14:12:05 941

原创 路径规划和导航算法

路径规划、导航和定位算法小狼@http://blog.csdn.net/xiaolangyangyang

2017-11-10 14:08:56 4219 2

原创 卡尔曼滤波数据融合算法

卡尔曼滤波数据融合算法小狼@http://blog.csdn.net/xiaolangyangyang

2017-11-10 14:06:43 22867

原创 ROS中几种常用的msg

ROS中几种常用的msg小狼@http://blog.csdn.net/xiaolangyangyang

2017-11-10 10:02:23 693

原创 常用惯性元器件

常用惯性元器件小狼@http://blog.csdn.net/xiaolangyangyang三轴加速度传感器三轴陀螺仪IMUINSMEMS

2017-11-10 09:45:09 2627

原创 SLAM学习资料

SLAM学习资料小狼@http://blog.csdn.net/xiaolangyangyang1. SLAM和MonoSLAM-cvchina介绍http://blog.csdn.net/peterli_xue/article/details/75423402. 视觉SLAM漫谈 (三): 研究点介绍http://blog.csdn.net/sup

2017-02-05 22:29:38 2922

vsftpd-3.0.2.tar.gz

vsftpd-3.0.2.tar.gz source code

2023-02-19

bp_network.rar

bp神经网络源码(c语言)

2016-11-14

x11vnc-0.9.13.tar.gz

x11vnc-0.9.13.tar.gz源码包

2016-10-27

player_fir.rar

加入了fir低通滤波器的音乐播放器player源码

2016-09-21

player.rar

加入了iir低通滤波器的音乐播放器player源码

2016-09-19

imx6_dsp.rar

在imx6上实现的音频数据处理

2016-09-17

busybox.sh

该脚本用于freescale i.mx6平台使用buildroot编译x11vnc时,设置库文件路径

2016-09-08

util-macros-1.13.0.tar.bz2

buildroot交叉编译x11vnc时需要用到的util-macros工具源码

2016-09-08

libtool-2.4.6.tar.gz

buildroot交叉编译x11vnc时需要用到的libtool工具源码

2016-09-08

beaglebone做图像识别——am335x_x11vnc_.rar

beaglebone(am335x平台),编译好的x11vnc库及应用程序

2016-08-23

beaglebone做图像识别—— vfb_.rar

beaglebone(am335x平台),虚拟显卡驱动及测试程序

2016-08-23

beaglebone做图像识别——am335x_qt-4.8.7_.rar

beaglebone(am335x平台),编译好的qt-4.8.7版本库文件及测试程序

2016-08-23

beaglebone做图像识别——am335x_opencv-2.4.12.3_usr_lib.tar.rar

beaglebone(am335x平台),编译好的opencv2.4.12.3版本库文件及ObjDetect目标识别测试程序

2016-08-23

beaglebone做图像识别——boot.rar

beaglebone(am335x平台)启动文件,包括MLO、uboot和uImage

2016-08-22

beaglebone做图像识别——opencv1.0.0移植.part2.rar

基于beaglebone(am335x)平台,移植opencv1.0.0的全过程及相应代码

2016-08-22

beaglebone做图像识别——opencv1.0.0移植.part1.rar

基于beaglebone(am335x平台),移植opencv1.0.0的全过程及相应的代码

2016-08-22

beaglebone做图像识别——buildroot-2016.05-rc2.0.tar.gz

buildroot-2016.05-rc2.0.tar.gz

2016-08-22

空空如也

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

TA关注的人

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