自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(176)
  • 资源 (17)
  • 收藏
  • 关注

原创 source insight4菜单工具按钮变乱恢复

在source insight4点击工具按钮的时候,把工具全部都折叠了,然后手动拉出来的时候就乱了。把 Toolbar 到 /Toolbar之间的内容都删掉。或者直接用everything去搜索这个文件。关掉打开的source insight4软件。再次打开source insight4。打开config_all.xml。

2023-10-28 15:16:36 709 1

原创 shell脚本来提取函数名的一些使用

使用awk说明:echo $line : 打印整行语句grep ‘(’ : 查到有“(”的语句awk -F ’ ( ’ ‘{print $1}’ : 已’(’ 为分割符,并获取第一段awk -F’ ’ ‘{print $NF}’ :已空格为分给符,获取第NF段(NF时分割的总段数,这里的意思就是获取最后一段)

2023-10-24 11:31:21 266 1

原创 dma fence 相关操作函数

fence相关函数和使用介绍

2022-10-27 11:45:37 743 1

原创 dma_fence_get

解析dma_fence_get函数的意义

2022-10-26 16:30:43 256

原创 GPU指令下发方式

描述GPU指令下发方式

2022-10-24 20:01:59 970

原创 c语言中字符串转16进制或10进制

字符串转16进制 字符串转10进制

2022-06-29 13:58:11 1693

原创 6.0 内核驱动-字符型驱动

相同:都要进行硬件实现层的设计(硬件裸机驱动)不同: 1:linux操作系统中加了众多接口,从系统API到硬件实现层调用过程中的系统框架2:同步,互斥,POLL,并发, 自旋锁,信号量 ,等待队列 standby,;linux机制同样要体现在内核驱动中3:驱动要服从linux内核管理:设备树,电源管理的全局构架4:不同CPU或不同linux版本的移植...

2022-02-12 21:22:52 592

原创 uboot移植

1 信息各版本下载:https://ftp.denx.de/pub/u-boot/版本:u-boot-2014.012U-boot 作用设置系统时钟,关闭中断,设置svc32模式,初始化硬件进行代码重定义(uboot自身)给内核进行参数的配置做内核代码的重定义做内核启动Uboot的具体结构1:分析主目录makefile 或者 直接编译看效果编译链接过程:配置-使用默认相近板卡配置的公版 make smdk2410_config编译2: 进行Uboot的移植和调式..

2022-02-12 20:56:26 925

原创 5.1 linux内存管理-分页管理和页异常处理

1:信息linux - 0.11memory.c2: 代码//显示内存已用完出错信息,并退出static inline volatile void oom(void){ printk("out of memory\n\r"); do_exit(SIGSEGV); //退出码SIGSEGV(11)相同值的出错码含义是:资源暂时不可用}//刷新页变换缓冲(一般位于cache中的TLB)宏函数//为了提高地址的转换效率,cpu将最近使用的页表数据存放在芯片中高速缓冲中。在修改过页表信息后,就

2022-02-09 21:53:35 1153

原创 5.0 linux内存管理-原理

1. 信息linux 0.112. 目的了解内存的管理机制了解虚拟内存和物理内存的映射方式了解操作系统内存和磁盘的交互(分页机制->缺页重读机制,用时拷贝机制)应用程序如何搞笑使用内存和高级程序的设计方式3. linux系统中内存映射图linux 0.11 默认支持16M虚拟盘:用来模拟磁盘4. 专有名词逻辑地址:程序员看到的地址,linux操作系统分配给每一个进程的独立地址(例如0.11中每个进程认为的自己的空间 64M的地址)线性地址:总线地址ARM CPU采用分段机

2022-01-30 18:29:52 1850 1

原创 4.6 linux文件系统-文件系统操作和管理

1:信息linux 0.11下面文件属于文件系统的高层操作和管理部分open.c :文件访问操作系统调用exex.c :程序加载和执行函数stat.c, :取得一个文件的状态信息fcntl.c :实现文件访问控制管理ioctl.c :控制设备的访问操作2 open.c本文中实现了许多与文件操作相关的系统调用。主要是文件的创建,打开和关闭,文件宿主和属性的修改,文件访问权限的修改,文件操作时间的修改和系统文件root的变动2.1 sys_open 打开或创建参数:filename -

2022-01-27 17:21:44 1698

原创 4.6 linux文件系统-虚拟文件系统VFS

1:信息版本:Linux-0.112:VFS和FS3:普通文件file_dev.c 主要操作数据:逻辑块号结构体struct file { unsigned short f_mode; //文件的类型和属性 unsigned short f_flags;//读写,执行 unsigned short f_count;//引用次数 struct m_inode * f_inode;//对应的inode节点 off_t f_pos;//本文件当前读写位置,lseek可以修改的};

2022-01-18 23:18:54 969

原创 单片机的换行字符\r\n和\n的相关问题

1:问题在使用单片机在串口助手上打印的时候,需要使用\r\n才能正常的换行. 而在linux在打印信息只需要一个\n2:原因这是由于系统对换行符的不同和导致的通常使用单片机打印信息是输入到windox下的串口助手上,而window下的换行是\r\n而unix和linux下的换行符\n3:符号含义\r是回车,carriage return的意思,作用是返回到当前行的最前方。\n是换行,line feed的意思,作用是跳到下一行的当前位置。\r\n是回车+换行,很容易理解,它的作用是跳到下一行

2022-01-13 20:45:00 2703

原创 4.5 linux文件系统-文件目录的操作

1:信息linux - 0.11linux/fs/namei.c2:目的:文件系统目录的建立,删除,打开,节点建立,删除文件系统的文件操作,打开,权限,属主等了解文件系统的命令操作 chmod chown mknodC语言中内存区域的检索和管理,高效代码的xiefa3: 相关函数3.1 权限检测函数permissionstruct m_inode { unsigned short i_mode; 16位数 文件类型 当前用户权限(3位) 用户组权限(3位) 其他用户权限(3位)

2022-01-09 23:10:44 865

原创 4.4 Linux文件系统-挂载卸载和超级块

1:基本信息代码:linux-0.11super.c : 含有处理超级快的代码超级块是设备的映射,超级块的操作关系到设备文件系统操作下面会解析:对超级块进行操作(创建,读取,释放) get_super, put_super, read_super文件系统加载/卸载: mount/umount sys_mount, sys_umount根文件系统的加载(/)mount_root2:相关宏和数组/* * linux/fs/super.c * * (C) 1991 Lin

2022-01-06 23:53:10 1878

原创 4.3 Linux文件系统-inode

1:2:inode文件与磁盘的映射结构

2022-01-06 18:09:33 1079

原创 4.2 linux文件系统-高速缓冲区

1:2:linux文件系统的几部分1:有关linux中高速缓冲区的管理部分。分页机制 buff.c2:文件系统的底层通用函数。(对于硬盘的读写,分配,释放,对于目录的节点管理,内存和磁盘的映射)3:对文件数据进行读写操作的模块(VFS 虚拟文件系统,硬件驱动和文件系统的关系, pipe,块设备的读取)4:文件系统与其他程序的接口实现(fopen 关闭,创建等文件的调用方式)文件系统的基本概念以磁盘为例,磁盘中有目录的映射,把磁盘分成盘片,每一个盘片 都有一个文件系统的子系统(章节目录)引

2021-12-31 11:02:48 1141

原创 4.1 内核文件系统-busybox

1:信息busybox版本:busybox-1.7.02:关于busyboxbusybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.我们平时用的那些linux命令就好比是分立式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里3:文件系统开始运行busybox上一章说明从内核如何到busybox, 通过调用linuxrc : 4.0 内核文

2021-12-28 13:20:02 705

原创 4.0 内核文件系统-kernel部分

1:信息内核版本: Linux 0.112:文件系统的出现位置板卡上电后先由UBOOT启动初始化办卡,将Linux移到内存中运行由linux内核自行做初始化操作,挂载了第一个应用程序(根文件系统 /linuxrc)根文件系统会提供磁盘管理服务,glic设备节点,配置文件,应用程序 shell命令(Android就是linux多了个文件系统)文件系统的重要部分:1:标准库:glibc OpenGl media framwork2:配置文件:/etc/init.d/rcS (开机运行的软件,

2021-12-28 13:19:27 678

原创 3.0 内核信号

1:信息代码 Linux 0.012: 内核中信号#define SIGHUP 1#define SIGINT 2#define SIGQUIT 3#define SIGILL 4#define SIGTRAP 5#define SIGABRT 6#define SIGIOT 6#define SIGUNUSED 7#define SIGFPE 8#define SIGKILL 9#define SIGUSR1 10#define SIGS

2021-12-24 23:24:31 480

原创 2.1 高版本内核初始化

1: 信息和文件代码版本:Linux-3.4.2文件:linux-3.4.2\arch\arm\kernel\head-common.Slinux-3.4.2/arc/arm/kernel/vimlinux.lds.S : 链接文件linux-3.4.2\arch\arm\include\asm\mach\arch.hlinux-3.4.2\arch\arm\mach-s3c24xx\mach-smdk2440.c2:板级信息传递目的:板级信息如何传递到linux内核中去2.1:段信息内容

2021-12-24 11:39:07 649

原创 扩展内联汇编 __asm__

1:汇编的结构__asm__ __volatile__(assembly template \\汇编指令行 : output operand list \\输出操作数列表 : input operand list \\输入操作数列表 : clobber list \\破坏列表内联汇编在逻辑上总是由四部分组成:关键字 asm() 或 asm()。修饰符 volatile 或 volatile:关键字 asm 或 asm 用于说明随后的字符串是内

2021-12-23 18:38:25 1324 1

原创 2.0 Linux内核的引导与启动

1:Linux的引导主要文件位置 linux/boot/1.1从硬盘读出cpu上电后会进入boot模式,其中BIOS (x86 是0xFFFF0 存储的总线地址)把bootsect从固定的地址拿到内存中的某个固定地址(0x90000),并且进行了一些硬件初始化和参数设置bootsect.s 磁盘引导块程序,在磁盘第一个扇区中的程序作用:首先将后续的setup.s 代码加载到紧接着bootsect.s的地方在显示屏上显示loading system 再将system(操作系统)模块加载到0x100

2021-12-23 17:52:18 1141

原创 关于inline和_syscall0和汇编函数带下划线

1:描述查看内核代码时,会有下面的声明static inline _syscall0(int,fork)2: inlineinline是一个内联函数,可以让gcc把函数代码集成到调用它的代码中。这会提高代码执行的速度3:_syscall0_syscall0在unistd.h中的内嵌宏代码,它以汇编的形式调用Linux的系统调用的中断 int 80,并在eax寄存器指定系统调用的功能号#ifdef __LIBRARY__#define __NR_setup 0 /* used only by

2021-12-23 17:47:39 1397

原创 1.2 内核进程销毁

1:代码版本Linux-0.11exit.c2:销毁流程销毁函数也是系统调用die()-> do_exit()具体过程:首先会释放进程的代码段和数据段占用的内存进行释放关闭进程打开的文件,对当前的目录和i节点进行同步如果当前要销毁的进程有子进程,就让1号进程作为子进程的父进程 (init进程)如果当前进程是一个会话头进程,则会终止会话中的所有进程改变当前进程的运行状态,变成TASK_ZOMBIE僵死状态,并向父进程发送信号SIGCHLD父进程再运行子进程的时候会运行wait

2021-12-22 14:43:02 472

原创 1.1-内核的进程调度和进程切换

1:代码环境linux 0.112: 进程调度辅助函数show_task()void show_task(int nr,struct task_struct * p)//nr为pid,代表第几个进程{ int i,j = 4096-sizeof(struct task_struct); //找到栈堆的大小 printk("%d: pid=%d, state=%d, ",nr,p->pid,p->state);//打印pid 和状态 i=0; while (i<j &a

2021-12-21 17:06:57 445

原创 1.0-内核进程初始化与创建

1:相关信息代码:linux 0.112: 进程结构体每个进程在内核中都对应着一个结构体struct task_struct,用来表示进程的状态和相关信息struct task_struct {/* these are hardcoded - don't touch */ long state; /*进程的状态 -1 unrunnable(为运行), 0 runnable(运行), >0 stopped(停止) */ long counter; //进程的时间片计数,当为0时就要进行调度

2021-12-21 15:40:00 646

原创 ST-link v2使用SW模式烧录代码

1:目的在某些开发板上没有引出ST-link完全适配的的20帧排线,可以通过连接SW模式,使用4根线来完成烧录操作2:ST-link的引脚含义3:ST-link v2 对应引脚编号的位置4:连接排线使用SW模式,要用VCC, SWCLK, SWOO, GND所以使用 1, 7, 9, 12这几个脚就可以。注意:1引脚默认是不供电的,名为TVCC,实际是Target VCC,就是说这个脚是接到目标芯片的IO轨电源上,用来检测IO顺从电压以确保信号的兼容性。因为debug工具不知道你的单板上I

2021-11-26 10:56:27 7662

原创 STM32 外部中断EXTI

外部中断线有20条,其中16条用于● EXTI线0 - 15连接 GPIOx 0 - 16 (EXTI0 对应GPIOx0, 每一组GPIO的0号引脚)● EXTI线16连接到PVD输出● EXTI线17连接到RTC闹钟事件● EXTI线18连接到USB唤醒事件● EXTI线19连接到以太网唤醒事件(只适用于互联型产品)首先配置中断要分钟两部分1:内置中的中断控制器的配置 NVIC, 相当于总开关2:每个外设单独的中断控制,例如GPIO的中断控制是由EXTI来执行的, 相当于分开关已GP.

2021-10-29 14:28:19 1069

原创 SetSysClockTo72配置系统时钟函数

static void SetSysClockTo72(void){ __IO uint32_t StartUpCounter = 0, HSEStatus = 0; /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ /* 使能 HSE */ RCC->CR |= ((uint32_t)RCC_CR_HSEON); /*等待SHE就绪并做超时处理*/

2021-10-28 17:14:14 678

原创 source insight快速添加代码文件头注释和函数注释

1:目的通过快捷键来为代码快速添加头注释和函数注释2:方法1.打开base工程2. 在utils.em下添加或修改下面的函数2.1代码头部注释/*获取文件名称*/macro GetFileName(pathName){ nlength = strlen(pathName) i = nlength - 1 name = "" while (i + 1) { ch = pathName[i] if ("\\" == "@ch@") break i = i - 1 }

2021-09-26 14:01:38 4461 4

原创 在代码中获取linux下的IP地址

1:目的由于linux下的IP是可以修改的,代码中使用IP时也要跟着修改,才能使用。所以在代码中先获取设备的IP地址,再进行网络联接,就可以避免这种事的发生。2:结构体2.1 struct sockaddr_in包含协议,端口, IP地址#include<netinet/in.h>或#include <arpa/inet.h>struct sockaddr_in {short int sin_family; /* Address famil

2021-09-16 09:11:18 358

原创 linux下打开串口设备并收发数据

1:目的为了打开 /dev/下的串口设备,并进行收发数据的操作2:用到内容文件操作定时器timerfd监听函数 select3:示例/************************************************************************* > File Name: series.c > Author: kayshi > Mail: kayshi2019@qq.com > Created Tim

2021-09-03 11:18:02 2110

原创 实现线程上使用的互斥锁

1:目的不使用库中的互斥锁函数,通过实现互斥锁函数,来实现线程间的互斥操作2:代码/******************************************************************************* * @file main.c * @verison v1.0.0 * @copyright COPYRIGHT &copy; 2020 CSG * @author ShiYanKai

2021-08-26 15:48:39 118

原创 C语言中哈希表的使用(二)

1:利用开源GitHub有针对hash实现的开源代码,如果不想自己一步步的实现hash的各种操作,可以直接包含开源代码中的头文件uthash.h(内部通过各种宏来实现), 利用里面的接口,来实现hash操作。可以节约大量的时间,并减少自己的代码量。有些时候需要自己进行简易的封装。2:结构体typedef struct user_t { int id; int cookie; UT_hash_handle hh; }user_t;结构体要自己定义一下id 表示 key

2021-08-19 16:33:08 666

原创 C语言中哈希表的使用(一)

1:哈希表哈希表是链表的一个变种。可以这么理解,一个数组放了n个指针,每个指针指向一个链表。存储的数据以key:value的形式保存。 通过key的经过一些规则可以计算出存在数组的那个位置。再遍历这个位置的链表来value的值。2:示例/******************************************************************************* * @file hash.c * @verison v1.0.0

2021-08-11 16:29:41 2705

原创 C库中的排序函数qsort

1:函数void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))作用:安装指定的方式进行排序2:参数base – 指向要排序的数组的第一个元素的指针。nitems – 由 base 指向的数组中元素的个数。size --数组中每个元素的大小,以字节为单位。compar – 用来比较两个元素的函数。通过这个函数来决定你想么排序如果compar返回值小于0(&l

2021-07-28 15:17:31 478

原创 将BCD码转化成10进制数

1:目的将BCD码转化成10进制数,并按照低位到高位的形式组合在一起。例如0x23和0x45 转化成 十进制45232:实现/******************************************************************************* * @file pow.c * @verison v1.0.0 * @copyright COPYRIGHT &copy; 2020 CSG * @autho

2021-07-03 17:12:32 6580

原创 Select函数的应用

Select的函数格式(我所说的是Unix系统下的伯克利socket编程,和windows下的有区别,一会儿说明): int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout);两个配套的结构体结构体:1:struct fd_setstruct fd_set可以理解为一个集合,这个集合中存放的是文件描述符(filedescriptor),即文件句柄,这可以是我们所

2021-07-02 16:08:25 184

原创 linux下对库文件和执行文件的命令操作

1: 查看执行文件的依赖 lddyankaishi@zx-dev:~/test/topo_file_switch$ ldd a.out linux-vdso.so.1 (0x00007ffc471bd000) libcjson.so.1 => /usr/local/lib/libcjson.so.1 (0x00007f4691037000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4690e45000) /lib6

2021-06-28 14:29:24 157

哈希引用开源程序的测试代码

哈希引用开源程序的测试代码

2021-08-19

cjson功能代码的相关实现

通过该应用可以实现对配置文件的读取 将读取的信息转化成json格式,可以对其中的某一项,进行修改,添加,删除的操作 当添加的内容已存在,或这删除的内容不存在都会使用标志位保存 将更改后的json格式字符串,保存回源文件 如果json的字符串大小未变化,说明没有更动,则不会变动源文件的内容 设计了专门的函数,来检测添加和删除是否成功

2021-03-30

黑马程序员_vue视频教程-资料.txt

黑马程序员最全最新Vue开发资料,包括配套的视频、代码、笔记等完整资料,是祝您完成梦想的最好资料库。

2021-03-23

vim下的配置文件vimrc

vim下的配置文件.vimrc下的常用配置信息

2021-02-01

list.h的源文件

list.h的源文件,如果可以和自己的c代码放在一个文件夹,然后#include “list.h”就可以把使用内部的函数

2020-11-23

MQTT异步使用的示例代码

MQTT的异步示例代码,需要前前安装好phao.mqtt.c的环境,并且修改一下Makefile的库路径。

2020-10-29

F407-rt-thread工程

基于F407开发得rt-thread源码,实现了PWM,LCD, SPI, W25Q128,I2C的AT24C和LWIP

2020-10-23

MQTT-old.zip

编写了一个程序,可以通过phao.mqtt.c这个mqtt的代码来访问阿里云。需要ubantu的环境,并安装了phao.mqtt.c。并且在阿里云上创建好了设备。详情参考博客:https://blog.csdn.net/weixin_36209467/article/details/107979633

2020-08-13

LED_BEEP.zip

可以控制STM32F407上的LED和蜂鸣器的代码,并和自己对应的机智云上产品相对应。可以进行控制。请看博客说明

2020-08-05

GAgent_00ESP826_04020024_17062808_combine.bin

机智云固件,可以连接设备,经行向机智云上发送数据命令,可以通过手机APP进行配置联网。经行移动端控制

2020-08-05

ATK-ESP8266连接阿里云.zip

通过在stm32上运行,发送AT指令到esp8288,控制其连接阿里云。并可以订阅发布主题。以及接收esp8288的反馈数据。进行led灯的控制。(esp8266需要下载AT的相关固件,固件在我另一个上传的资源中)

2020-08-04

MQTT固件使用指导.zip

可以通过这个手册查阅如何订阅主题,发布主题,连接阿里云以及相关配置等指令的操作方式。kaysihi插件的思考

2020-08-03

MQTT_ESP-12S_DIO_32Mbit_2.0.0_2020311.bin

ESP8266 的MQTT AT固件,可以通过AT指令连接阿里云,并使用MQTT进行主题的订阅与发布

2020-08-03

V1.3.0烧写及说明.zip

ESP8266可以经行内部烧录代码的操作,但是需要相应的工具。并且要把ESP8266开发板的IO_0接地。

2020-08-01

esp8266_aliyun_mqtt_app.zip

是ESP8266针对阿里云进行开发的开源代码,可以放在ESP8266的SDK中进行编译。需要针对自己的阿里云设备进行修改

2020-08-01

c-sdk-v3.2.0-5420c835984400a141d7529b93c5c8a49b108b06.zip

ESP8266的SDK代码,SDK是软件开发工具包。由设备厂家经行提供,只需要按照说明经行修改即可。

2020-08-01

舒服简洁主题.xml

Soure insight4 舒适简洁的主题,字体选用console ,看不惯黑色,这款采用灰白色

2019-09-11

空空如也

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

TA关注的人

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