- 博客(53)
- 收藏
- 关注
原创 nginx rtmp服务器搭建
参考链接:https://blog.csdn.net/qq_37079898/article/details/125037560。
2024-07-31 16:39:56
328
原创 005uboot启动内核
内核实际上就是一个比较复杂庞大的裸板程序,只不过是内核无法自启动,必须借助boot来启动,内核运行起来后,在软件分层上分成了应用层和内核层,内核层可以随意的访问硬件,应用层无法随意的访问硬件资源,想要访问硬件资源必须open后产生软中断进入内核层。进入uboot后,输入printenv可以看到一个环境变量,bootcmd,这个环境变量里面内容的作用就是把内核从NandFlash中读取到SDRAM中,然后从SDRAM的加载地址启动内核。1.移动内核到内核的加载地址(uImage头部定义了in_load)
2024-07-24 14:55:53
912
原创 004自己添加一个uboot指令
uboot指令相关的代码在common目录下,我们进入common目录,模仿cmd_bootm.c实现一个指令。我们仿照这个文件实现一个cmd_hello.c。这个函数是指令功能函数。修改Makefile。
2024-07-22 21:29:57
134
原创 srs-librtmp交叉编译并移植RV1126
瑞星微平台提供的Rkmedia只提供了rtsp的相关api,而rtmp相关的例程只出现在rkadk中并且这部分的代码特别复杂,librtmp不支持h264裸流,所以我们引入了srs-librtmp。
2024-07-22 15:52:03
396
原创 003uboot目录分析和两个阶段
lib_ppc:存放对PowerPC体系结构通用的文件,主要用于实现PowerPC平台通用的函数,与PowerPC体系结构相关的代码,lib_i386:存放对X86体系结构通用的文件,主要用于实现X86平台通用的函数,与PowerPc体系结构相关的代码,lib_arm:存放对ARM体系结构通用的文件,主要用于实现ARM平台通用的函数,与ARM体系结构相关的代码。cpu:cpu目录存放的是uboot支持的各种cpu,其中包括各种cpu的启动文件。board:board里存放的是支持各个开发板的文件,包括。
2024-07-20 22:57:57
397
原创 002uboot Makefile分析
因为我们运行的指令是./mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0,这里面并没有 “-”表示的参数,所以这几句就可以删掉了,,其实编译过程的Makefile分析起来同样简单,无非就是,定义交叉工具,引入头文件、各种库文件、链接编译好的.o文件最终形成一个可执行的程序。上面这个脚本用于判断第六个参数是否为空,很显然我们执行的那个代码的第六个指令是存在的所以直接执行else分支,所以直接执行。所以这个条件不成立,我们把这个代码也可以删除了。
2024-07-16 21:32:18
259
原创 001uboot体验
上电->uboot启动->关闭看门狗、初始化时钟、sdram、uart等外设->把内核文件从flash读取到SDRAM->引导内核启动->挂载根文件系统->启动根文件系统的应用程序。uboot是一个通用的裸机程序,为了适应各种芯片,必须要对uboot官方源码进行修改,我们这里采用打补丁的方式进行修改uboot源码。使用oflash烧写u-boot.bin,烧写完成后上电的一瞬间按下空格键就会进入uboot。set [环境变量名称] [环境变量的值] 可以设置环境变量。+具体的指令,可以显示出指令的用法。
2024-07-07 16:14:53
260
原创 rv1126 imx307修改驱动使能图像垂直反转180度
修改imx307驱动代码加入这一句代码,直接写死,这样拍出来的照片就使垂直翻转180度的了。修改,3007地址的bit0为1。查看imx307芯片手册。
2024-05-28 17:03:27
300
原创 RV1126 ext4 img格式的文件系统制作
(10)修改开发板/etc/fstab文件,挂载文件系统,执行以下命令即可。(9)执行resize2fs -M media.img调整大小。(1)制作镜像文件,用dd工具创建12G大小空的镜像文件。在media目录中有lost+found说明就挂载上了。(11)修改SDK中的parameter.txt。(6)往media添加要添加的内容。(8)检查和修复media.img。(5)挂载空的media.img。(2)可以查看制作的镜像。根据具体情况调整分区即可。(3)格式化镜像文件。
2024-02-04 16:24:41
286
原创 重定位(一)段的概念引入
NOR FLASH的特点:可以像内存一样的读,但不能像内存一样的写,必须通过特定的指令来写,那么问题来了,如果程序中含有需要更改的全局变量或静态变量,他们存储在NOR上我们直接修改是无效的(局部变量存储在栈中,也就是内存中,可随时改变他的初始值),那我们想要修改全局变量或局部变量该怎么办呢?这就引入了重定位机制,当程序是NAND启动时,2440会把前4K的代码拷贝到SRAM中运行(由硬件完成拷贝),然后CPU从0地址开始运行(0地址对应的是SRAM)。bss段存放初值为0和没有初值的全局变量。
2024-01-21 22:49:11
889
原创 gcc的编译过程
如果在链接时指定了-nostdlib选项时,在系统上编译会出错,因为这个选项无法链接启动文件和libc库,通常在编译裸机代码、bootloader、内核文件时添加该选项,因为这些文件的运行是完全不需要依赖系统的。(1)动态链接: 动态链接是链接动态库,在程序执行时才去找这些库中的内容,编译出来的可执行文件体积小,但是在运行可执行程序时,在该环境下必须要有相应的动态库。也可以直接 gcc -c xxx.c -o xxx.o ,gcc会对.c文件默认进行预处理,-c选项可同时进行编译和汇编操作。
2023-12-12 22:04:14
179
原创 Tengine 边缘AI计算框架移植RV1126(包括opencv的交叉编译)
编译opencv是为了,在编译Tengine时指定OpenCVConfig.cmake,以便寻找特定的opencv动态库01.从github拉取opencv源代码02.在虚拟机安装cmake04.解压opencv源码,并进入文件05.新建文件ax620a.toolchain.cmake配置交叉编译工具链06.创建build文件夹并配置cmake07.编译并安装查看在build目录下是否存在OpenCVConfig.cmake文件。
2023-10-14 23:06:35
1241
2
原创 NUC980webServer开发
1. 把驱动文件源码放在linux源码的drivers/net/wireless/realtek/rtlwifi/目录下,并且驱动文件源码目录更名为rtl8189。3.进入上级目录drivers/net/wireless/realtek/rtlwifi并打开Makefile。2.进入drivers/net/wireless/realtek/rtlwifi/rtl8189目录。3.移植hostapd相关工具到/sbin目录下 ,移植配置文件到/etc目录下。2.拷贝openssl相关库到/lib目录下。
2023-09-07 16:51:33
728
1
原创 计算文件系统分区的大小
f_bsizef_frsizef_blocksf_bfreef_bavailf_filesf_ffreef_favailf_fsidf_flagf_namemax在使用statvfs函数获取文件系统信息时,可以通过访问statvfs结构体的成员来获取所需的信息。例如,可以获取文件系统的总块数,可以获取文件系统的剩余块数。
2023-08-22 09:36:11
315
原创 goahead5.1.1移植arm Linux开发板
链接:https://pan.baidu.com/s/1JH60KeTF3AoAhbb1dMIWnQ提取码:1111。
2023-08-21 14:37:16
799
1
原创 libcurl库
libcurl是一个跨平台的网络协议库,支持http、https,ftp,telnet等应用层协议。libcurl同样支持HTTPS证书授权,HTTP POST,HTTP PUT,FTP上传,HTTP基本表单上传,大力cookies和用户认证。
2023-03-21 16:33:59
2632
原创 网络知识(四)Http协议
(2)对于GET请求方式,浏览器把http header和data一同发送出去,服务器响应200代表发送成功。(3)对于POST请求,浏览器先发一个header,服务器响应100 continue ,浏览器再发送data ,服务器响应200。主要的响应数据,在浏览器的主体区域显示的数据都是响应主体(对于C语言而言拿的就是ASCII码或者是字符串)get 请求是没有请求主体的,get数据是在 请求行的url上进行传递到。(4)get 请求页面后退时,不产生影响(因为有缓存)
2023-03-20 20:26:00
95
原创 网络知识(三)socket、Tcp、Http之间的区别和联系
socket就是套接字,是网络通信的基石,是支持TCP/IP通信的基本操作单元。socket对程序员来说就是对Tcp/ip的封装,因为无法直接操控TCP/ip来进行通信。socket是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。(其实就是bind绑定)
2023-03-19 22:28:29
206
1
原创 网络知识(二)三次握手、四次挥手
三次握手发生在TCP连接的过程当中。通过TCP的连接,使上层网络的数据传输建立在“无差别的网络上”。在建立连接时,服务器处于被动状态。TCP一共有6个标志位,常见的有四个标志位含义SYN建立连接ACK响应确认结束RST重置四次挥手发生在TCP client与server断开连接的过程中。在断开时需要客户端和服务端总共发送4个包以确认连接的断开。在 socket 编程中,这一过程由客户端或服务端任一方执行close来触发。
2023-03-19 20:50:27
86
原创 网络知识(一)OSI网络模型
TCP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。OSI七层模型是一个理想化的概念模型,每一层都能提供抽象的良好的数据接口。TCP/IP协议被分为四个概念层,其中的三层对应于OSI参考模型的相应层。
2023-03-19 19:09:16
87
原创 orangepiZero2智能家居(三)添加火灾、socket、语音模块
火灾检测模块大致与灯光模块相同。不同点:火灾模块要读取引脚状态pinMode要把output 改为input不用打开和关闭。
2023-03-19 14:10:53
103
原创 orangepiZero2智能家居(二)主流程设计和灯光代码编写
其余的灯的代码编写与浴室灯几乎一样,改改名称就好了,在mainPro中添相关的调试信息即可。
2023-03-17 20:36:12
157
原创 orangepiZero2智能家居(一)程序设计思路
设计模式是代码经验的总结,代码的稳定性高,拓展性强。是一系列的编程思想,一共23种模式。设计模式的目标是提高代码的可读性、稳定性、重用性、拓展性。工厂模式是设计模式的一种。算法并不是设计模式,只是解决问题的一种方法。设计模式描述了紧密结合的类与对象。类是一种用户自定义的数据类型。在C语言中结构体可以充当类。对象是类的一种实现,int age;int sex;//成员属性//成员方法dog cat都是一种类的对象。工厂模式是常用的设计模式之一。
2023-03-17 15:46:39
333
原创 LDV7 语音识别模块开发
本模块实际原理为 1 片 STC11 单片机+1 片 LD3320 组合形成的一款语音识别模块,语音识别部分已写好驱动程序,用于只需要对 STC 单片机进行编程加入自己的识别语句和控制程序即可,语音识别部分无需理会和做编程处理。对此用户只需要在提供的源程序基础上做单片机的编程应用即可,本模块具备 1 个 5V TTL 串口和 16 个单片机 IO 口的引出,可与外部单片机进行通信交互信息亦可控制继电器等设备。
2023-03-14 23:13:11
485
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人