- 博客(33)
- 资源 (1)
- 收藏
- 关注
原创 编程语言的一些答疑
为什么会有这么多中编程语言因为需求是多种多样的,为一种语言实现所有需求是非常困难的为什么会有新的编程语言实现一个新的编译器并不困难,几个人就可以了,大型的编译器可能也就十几个人,真正的成本的是程序员的学习成本 应用广泛的语言更新会慢,用的人多,一点点变化就会花费大量时间成本去培训。 学习一门新的语言花费的时间并不多 总结为旧的语言变化慢并不满足新的需求,并且学习成本不高的时候,就会有新的语言出现。因为程序员培训的成本高,所以新出现的编程语言会和旧的编程语言相似。那种编程语言是最好的编
2022-04-09 23:17:16
301
原创 编译器过程概述
Lexical Analysis(词法分析)词法分析的目的是将程序文本划分为单词,或者我们在编译器中所说的,标记利用程序文本中的空格,分号等符号来识别程序文本Parsing(解析)Semantic Analysis(语义分析)Optimization(优化)Code Generation(代码生成)...
2022-04-09 22:46:12
157
原创 软件执行的流程
什么是编译原理代码执行分为2个部分compilers(编译器)1 将代码编译成可执行文件,汇编代码或者字节码,MDK就是一个编译器interpreters(解释器)1 执行编译器生成的可执行文件,mcu就是一个解释器...
2022-04-09 21:00:42
414
原创 FreeRTOS中断优先级管理
CM3内核有16个中断, 优先级通过 SCB->SHP[0] to SCB->SHP[11] 设置/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/ NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt
2021-07-07 14:06:25
511
原创 写代码杂谈
命名规范变量名字应当是变量类型加上变量意义的英文前缀符号变量类型ccharsshortllongxportBASE_TYPE 类型、数据结构、任务句柄、队列句柄等定义的变量名的前缀也是 xp指针u无符号数据函数命名是 返回值的前缀+函数定义所在的文件+函数意义函数名包含了函数返回值的类型、 函数所在的文件名和函数的功能,如果是私有的函数则会加一个 prv(private) 的前缀。特别的, 在函数名中加入了函数所在的文件名,
2021-06-27 18:30:23
221
原创 STM32串口读取一帧数据USART_IT_IDLE
stm32 串口读取数据中断USART_IT_RXNE:读取到一个数据产生中断USART_IT_IDLE:读取到一帧数据产生中断以前串口读取一帧数据的方法:收到数据后重置定时器的值,等到定时器超时的时候就知道一帧数据读取完了,不过今天有了新的方法,我们可以从USART_IT_IDLE来判断是否读取完成了一帧数据。void USART_Config(void){ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_Init
2021-06-23 20:02:07
3980
3
原创 FreeRTOS API笔记
消息队列两个任务之间要通信,要传输数据使用消息队列xQueueCreat();xQueueSend() //默认添加在队尾xQueueSendToFont()//添加在队头xQueueReceive()//从队尾接收xQueueReceive() //从队列接收数据,然后删除xQueuePeek() //接收数据并不删除信号量二值信号量用来同步任务,计数信号量表示资源的可使用数,使用的是消息队列一样的数据结构xSemaphoreCreateBinary() //创建二值信号量xSema
2021-06-23 14:30:09
189
原创 FreeRTOS中多种信号量
信号量信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务之间同步或者临界资源的互斥访问,常用于协助一组互相竞争的任务来访问临界资源。在多任务系统中,各任务之间需要同步或者互斥实现临界资源的保护,信号量功能可以为功能可以为用户提供这方面的支持抽象来讲,信号量是一个非负整数所有获取它的任务都会将该整数减一(获取它当然是为了使用资源),当该整数值为零时,所有试图获取它的任务都将处于阻塞状态。通常一个信号量的计数值用于对应有效的资源数,表示剩下的可被占用的互斥资源数。其值的含义分两种情况:
2021-06-21 19:26:41
494
原创 cortex-m3中寄存器
简介Cortex‐M3 是一个 32 位处理器内核。 内部的数据路径是 32 位的, 寄存器是 32 位的, 存储器接口也是 32 位的。 CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。 这样一来数据访问不再占用指令总线,从而提升了性能。 为实现这个特性, CM3 内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。换句话说,不是因为有两条总线,可寻址空间
2021-06-17 17:02:06
1772
2
原创 pnedSV和SVC
pendSV什么是pendSV:PendSV是可悬起异常,如果我们把它配置最低优先级,那么如果同时有多个异常被触发,它会在其他异常执行完毕后再执行,而且任何异常都可以中断它pendSV有什么作用让我们举个简单的例子来辅助理解。假设有这么一个系统,里面有两个就绪的任务,并且通过SysTick异常启动上下文切换。但若在产生 SysTick 异常时正在响应一个中断,则 SysTick异常会抢占其 ISR。在这种情况下,OS是不能执行上下文切换的,否则将使中断请求被延迟,而且在真实系统中延迟时间还往往不可
2021-06-17 14:50:51
353
原创 FreeRTOS编程风格
FreeRTOS使用的都是标准C语言的的数据类型,但是针对不同的处理器,对C语言的数据类型又重新进行了定义,比如char重新定义成了portCHAR,这里的port表示接口的意思。用户并非一定要遵守FreeRTOS的风格,任然可以直接使用C语言的标准类型,在FreeRTOSzhon ,int型从不使用,只是用short和long,在cortex-M系列MCU中,short为16位,long 为32位。数据类型重定义在portmacro.h中数据类型新定义的数据类型实际数据类型(C..
2021-06-16 11:48:24
558
原创 ISP和IQ调试
什么是ISPisp:image signal process, 图像信号处理,这是技术image signal processor, 图像信号处理器,这是设备本质:通过数字运算来修补前端采集的不理想数据,尽可能提升图像质量。ISP处理器:核心是数字运算能力,在HI3516EV200中是内置DSP。在哪里做ISP镜头–>sensor–>ISP–>VI–>…isp单元可以在sensor中,独立,或集成到AP(HI3516EV200) Soc中,现在大多数在AP中H
2021-06-14 21:58:58
3588
1
原创 H264数据格式解析
H264和MP4的关系MP4是H264的打包格式,H264是视频数据的格式MP4由索引信息和H264视频数据组合而成,有索引信息可以保证丢了一包数据之后剩下的数据仍然可以继续使用MP4的媒体信息(例如媒体长度)和视屏数据是分开存储的MP4的数据组织很自由,不一定按照时间排序,可能后一秒的图像排序在前一秒图像的前面MP4格式文件解析https://www.cnblogs.com/ranson7zop/p/7889272.htmlMP4格式由若干个不同的box组成,打包和解包时都以box为单
2021-06-05 16:57:50
9446
2
原创 telnet 登录HI3516EV200
为什么要添加telnet调试shell只有一个,某个进程会占用shelll界面,没有办法做别的操作。什么是telnetTelnet即Telnet协议,是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。简单来说就是基于TCP/IP的远程登陆方式怎么使用telnet: telnet 客户端telnetd: telnet 服务器在开发板中执行 telnetd服务器在后台启动 telnetd &然后再.
2021-06-02 21:40:52
473
3
转载 关于内存对齐
一、内存对齐的原因我们都知道计算机是以字节(Byte)为单位划分的,理论上来说CPU是可以访问任一编号的字节数据的,我们又知道CPU的寻址其实是通过地址总线来访问内存的,CPU又分为32位和64位,在32位的CPU一次可以处理4个字节(Byte)的数据,那么CPU实际寻址的步长就是4个字节,也就是只对编号是4的倍数的内存地址进行寻址。同理64位的CPU的寻址步长是8字节,只对编号是8的倍数的内存地址进行寻址,如下图所示是64位CPU的寻址示意图:这样做可以实现最快速的方式寻址且不会遗漏一个字节,也不会
2021-06-01 23:37:58
162
原创 TPC三次握手,四次挥手
TPC报文格式TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:上图中有几个字段需要重点介绍序号: Seq序号,占32位,用来标识从TCP源端想目的端发送的字节流,发起方发送数据时对此进行标记。确认序号: Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1标志位:共6个,即URG,ACK,PSH,RST.SYN,FIN等,集体含义如下:URG:确认序号有效PSH:接收方应该尽快将这个报文交个应用层RST:重置连接SY
2021-06-01 17:38:57
508
2
原创 H.264编码原理
之所以能够实现视频编码主要是视频存在时间冗余和空间冗余* 空间冗余: 在同一幅图片里面,存在大量像素点颜色一致的地方* 空间冗余: 在视频中,上一帧和下一帧数据中存在大量像素点一样的地方视频编码关键点 : 压缩比, 算法复杂度 , 还原度H.264的2大组成部分, VCL和NAL* VCL: 如何进行视频压缩* NAL:被压缩的视频流如何进行网络传输关于H.264编码相关的一些概念宏块(MB,macroblock): 多个像素点组成的块,图像有区域相似性,在同一个块中像素点相似片(sl.
2021-05-28 14:57:44
174
原创 调用百度的人脸识别SDK实现人脸检测
在百度控制台创建APP具体操作过程看上一篇文章https://blog.youkuaiyun.com/qq_34613314/article/details/117290951?spm=1001.2014.3001.5501在当前目录下创建AipFace.py,并且代码如下import base64from aip import AipFace""" 你的 APPID AK SK """APP_ID = '你的APP ID'API_KEY = '你的API KEY'SECRET_KEY = '你的秘.
2021-05-28 14:56:10
868
原创 python文字转语音
最近工作需要合成一些语音文件放到设备里面播放,但是一直都没找到好用的工具。本来找到了一个叫TTS的工具但是和以前的语音听起来很别扭,所以自己写了一个PYTHON工具调用百度的语音合成接口生成语音。效果是输入文字,调用接口会将文字转成MP3文件并且保存访问百度智能云 https://console.bce.baidu.com/?_=1622010432406&fromai=1#/aip/overview点击语音技术访问控制台创建语音合成应用并开通和领取免费次数,可以免费5W次使用点击管理
2021-05-26 15:12:39
276
原创 编译MT7601
1. error: macro “DATE” might prevent reproducible builds [-Werror=date-time]这是因为gcc4.9以后对__DATE__ 和 __TIME__做出了限制,如果是gcc4.9之前的版本就没有这个问题解决办法是 os/linux/config.mk文件中的HI3516平台中添加一下标志即可EXTRA_CFLAGS += -Wno-error=date-time...
2021-05-15 18:57:58
378
转载 第十二章:将hi3816e上的镜头更换为OV9712
跟换镜头直接看这篇文章就可以了https://blog.youkuaiyun.com/tainjau/article/details/80428244
2021-04-27 14:20:25
159
原创 HI3516EV200 ORTP
ORTP的介绍openRTP,用C实现的一个RTP库(其实还有C++实现的,JAVA等实现的)实质是一个视频服务器,工作时客户端和服务器实时传递视频数据一般认为RTP工作在传输层,但是其实RTP比TCP/UDP高一个层次RTP(及RTCP)的实现有国际标准RFC3550规定,只要符合协议谁都可以自己写一个本季课程重点在于使用ORTP来实现局域网视频实时传输ORTP库的移植准备源码下载ortp源码:https://github.com/dmonakhov/ortp存放到临时工作目录
2021-04-24 17:17:00
329
原创 HiMPP SAMPLE_VENC分析
mpp中的例程每一个例程面向一个典型应用,common是通用性主体函数,我们只分析vencvenc中的main调用venc中的功能函数,再调用common中的功能函数,再调用mpp中的API,再调用 HI3518E内部的硬件单元。H.264 H.265 MJPEG 视频编码规范标准1080P、720P、VGA、D1 视频分辨率(清晰度)fps(frame per second) 帧率海思编码规范例程中结构体和枚举类型定义都是全大写字母用下划线分隔开,定义后面会用下划线带字母表示类型,采用
2021-04-20 10:39:48
1538
原创 RGB与YUV
mpp中的例程每一个例程面向一个典型应用,common是通用性主体函数,我们只分析vencvenc中的main调用venc中的功能函数,再调用common中的功能函数,再调用mpp中的API,再调用 HI3518E内部的硬件单元。H.264 H.265 MJPEG 视频编码规范标准1080P、720P、VGA、D1 视频分辨率(清晰度)fps(frame per second) 帧率相似平台未有特殊说明, Hi3559CV100 与 Hi3559AV100 内容一致。未有特殊说明, H
2021-04-14 14:36:33
423
原创 HI3516EV200 sample_venc测试
1:首先搭建NFS服务器,让开发板和虚拟机之间可以传输数据,NFS服务器搭建方法如下 https://blog.youkuaiyun.com/u013485792/article/details/509836532:解压文件系统镜像文件 Hi3516EV200_SDK_V1.0.1.0/osdrv/pub/rootfs_uclibc.tgz 该文件就是文件系统文件,不过被压缩起来了3:添加库文件到文件系统镜像cp -rf /Hi3516EV200_SDK_V1.0.1.0/package/mpp/ko /H
2021-04-12 21:18:05
468
转载 Hi3518e_SDK中的mpp研究
1、mpp是海思预先开发好的视频编解码的驱动。(.a、.h、.so)海思的闭源项目,所以我们看不到源代码。2、阅读mmp\ko\load3518e脚本文件Useage: ./load3518e [ -r|-i|-a ] [ sensor ]-r : rmmod all modules 卸载驱动-i : insmod all modules 安装驱动default : rmmod all moules and then insmod them 卸载再安装驱动海思内部支持了以下的sersorim
2021-04-12 13:54:20
195
转载 HI3516EV200 启动之后做了什么
1: 启动之后先从linuxrc开始执行,更多的是在etc目录下的那些脚本etc/init.d/rcsfstab:挂载各种虚拟文件系统的fs-version:版本号,不知道是用来干嘛的,但是不重要吧。group:跟登入有关,定义了用户组。inittab:在busbox中被调用的,init初始化程序用到的配置文件。比如开机的时候干啥,关机的时候干啥的。matb:也是挂载虚拟文件系统的。passwd:登入用户名和密码passwd-:登入用户名和密码profile:启动的时候默认会执行里面
2021-04-12 12:00:08
207
原创 烧录HI3516EV200的uboot,kernel,fs
在上一篇在我们生成了uboot zImage,fs,这一篇我们把这些文件烧录到摄像头中1:使用HITOOL 烧录uboot文件到开发板中,HItool在\hi3516ev200+imx307+tf\海思sdk\Hi3516EV200R001C01SPC010\01.software\pc\HiTool文件夹中,
2021-04-09 18:22:37
306
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人