- 博客(28)
- 收藏
- 关注
原创 Orcad 输出有链接属性的PDF
打开cadence Orcad ,accessories->candece Tcl/Tk Utilities-> Utilities->PDF Export,可以看到刚才修改的配置已经生效,点击打印,即可输出具有链接属性的PDF。 将Ghostscript的路径修改正确。 设置默认打印机为 Adobe PDF。有链接属性的PDF
2024-11-19 10:19:09
860
1
原创 Cadence快捷键的设置
快捷键设置有两种方式,一种是funckey,一种是alias。funckey是直接生效;而通过alias设置时,是按完快捷键之后,再按回车生效,所以alias适合一些符合按键(多个字母的快捷键)在安装目录下找到SPB_Data文件夹,找到env环境变量文件,C:\SPB_Data\pcbenv\env,添加快捷操作键。一些详细的参考设置如下所示。
2024-02-28 11:35:33
1634
原创 linux 下TCP通信例程
TCP server#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <linux/if.h>#include <sys/ioctl.h>#include <unistd.h>#include <signal.h>#include <st
2021-10-20 22:59:30
839
原创 嵌入式编程通用Makefile
一、根目录下Makefile这个Makefile为主MakefileCROSS_COMPILE = AS = $(CROSS_COMPILE)asLD = $(CROSS_COMPILE)ldCC = $(CROSS_COMPILE)gccCPP = $(CC) -EAR = $(CROSS_COMPILE)arNM = $(CROSS_COMPILE)nmSTRIP = $(CROSS_COMPILE)stripOBJCOPY = $(CROSS_COMPILE)o
2021-10-18 16:11:16
375
转载 Linux中的workqueue机制
转载与知乎https://zhuanlan.zhihu.com/p/91106844一、前言Linux中的workqueue机制是中断底半部的一种实现,同时也是一种通用的任务异步处理的手段。进入workqueue队列处理的任务(work item)在代码中由"work_struct "结构体表示(定义在include/linux/workqueue.h):struct work_struct { struct list_head entry; work_func_t func; atomic_
2021-10-15 11:57:02
764
原创 Linux中断处理的“下半部”机制
前言中断分为硬件中断,软件中断。中断的处理原则主要有两个:一个是不能嵌套,另外一个是越快越好。在Linux中,分为中断处理采用“上半部”和“下半部”处理机制。一、中断处理“下半部”机制中断服务程序一般都是在中断请求关闭的条件下执行的,以避免嵌套而使中断控制复杂化。但是,中断是一个随机事件,它随时会到来,如果关中断的时间太长,CPU就不能及时响应其他的中断请求,从而造成中断的丢失。因此,Linux内核的目标就是尽可能快的处理完中断请求,尽其所能把更多的处理向后推迟。例如,假设一个数据块已经达到了网线,
2021-10-05 21:53:31
1527
原创 总线设备驱动模型
一、总线设备驱动模型总线设备驱动模型采用分层分离的方式来进行,采用bus/dev/drv的模型,把设备从驱动中剥离出来。二、platform总线模型详解首先查看bus_type实例platform_bus_type.struct bus_type platform_bus_type = { .name = "platform", .dev_groups = platform_dev_groups, .match = platform_match, //bind platform devi
2021-10-02 11:25:42
2077
原创 【嵌入式】内核中的container_of宏
/**container_of - 通过结构体的一个成员获取容器结构体的指针@ptr: 指向成员的指针。@type: 成员所嵌入的容器结构体类型。@member: 结构体中的成员名。*/#define container_of(ptr, type, member) ({ const typeof( ((type *)0)->member ) *__mptr = (ptr); (type *)( (char *)__mptr - offsetof(type,member) );})
2021-09-26 01:05:32
132
原创 LED驱动程序框架,兼容多个单板
一、整体框架以面向对象的方式,把驱动拆分为通用的框架(leddrv.c)、具体的硬件操作(board_X.c):抽象出一个结构体struct led_operations{ int num; /*灯的数量*/ int (*init) (void); /*初始化LED,which-哪一个LED*/ int (*open) (int which); int (*ctl) (int which, char status);/*控制对应的LED的亮灭*/ void (*exit)
2021-09-25 11:26:43
393
原创 基于STM32MP1的简单LED驱动程序
注意参考内核例程一、驱动#include <linux/kernel.h>#include <linux/module.h>#include <linux/slab.h>#include <linux/init.h>#include <linux/fs.h>#include <linux/delay.h>#include <linux/poll.h>#include <linux/mutex.h>
2021-09-24 21:29:41
489
原创 hello驱动程序
一、hello驱动程序编程过程当中,注意参考内核的历程。#include <linux/module.h>#include <linux/fs.h>#include <linux/errno.h>#include <linux/miscdevice.h>#include <linux/kernel.h>#include <linux/major.h>#include <linux/mutex.h>#in
2021-09-24 01:52:36
188
原创 c++基于绑定(tie) 的同步
流可以绑定到一个输出流上,这样在每次输入/ 输出前可以刷新输出流的缓冲区比如:cin 绑定到了cout 上#include <iostream>#include <fstream>#include <string> int main(){ std::ofstream os("test.txt"); std::ifstream is("test.txt"); std::string value("0"); os <&l
2021-09-23 10:41:40
264
原创 【C++ 】基于字符串流的字符串拼接优化操作
#include <iostream>#include <string>#include <fstream>#include <sstream>//基于字符串流的字符串拼接优化操作int main(){ std::string x; //效率不高,每次+,都需要释放内存、申请内存 x += "Hello"; x += " world"; x += " Hello"; x += " world"; std::ostringstream
2021-09-23 10:09:56
497
原创 C++函数指针
函数指针#include <iostream>using F = int(int);F fun; //等价于int fun(int val),声明了一个函数int fun(int val) //函数类型 int(int){ return val + 1;}int add(int val){ return val + 1;}int sub(int val){ return val - 1;}using K = int[3];K a = { };//定义了
2021-09-21 12:43:52
135
原创 c++ 达夫设备
达夫设备 switch + 循环#include <iostream>#include <vector>//达夫设备int main(int argc, char *argv[]){ constexpr size_t buffer_count = 10001; std::vector<size_t> buffer(buffer_count); for (size_t i = 0; i < buffer_count; i++) { buffe
2021-09-12 13:38:25
131
原创 移植ffmpeg至ARM平台,利用ffmpeg+ffplay搭建rtsp流媒体服务器
一、前言利用FFMEPG+FFPlay搭建一个RTSP流媒体服务器,以便终端设备进行拉流。系统框架如下图所示。LCD通过UDP发送H264的裸流给车载播控器,车载播控器作为一个中继,将H264裸流转转成RTSP流。本项目中无需传音频。二、 ffmpeg移植移植x264下载x264源码,进行配置并进行交叉编译。./configure --prefix=/home/hi3798/Desktop/ffmpeg-mpis/x264-master-install --enable-static --
2021-08-18 11:36:11
2137
原创 基于FFmpeg的推流器(UDP推流)
一、推流器对于输入输出文件无要求1、输入文件可为网络流URL,可以实现转流器。2、将输入的文件改为回调函数(内存读取)的形式,可以推送内存中的视频数据。3、将输入文件改为系统设备(通过libavdevice),同时加上编码的功能,可以实现实时推流器(现场直播)。二、代码实现#include <stdio.h>#define __STDC_CONSTANT_MACROS#ifdef _WIN32//Windowsextern "C"{#include "libavform
2021-08-13 23:36:49
5285
1
原创 【C++】类型的自动推导
类型的自动推导– 从C++11 开始,可以通过初始化表达式自动推导对象类型– 自动推导类型并不意味着弱化类型,对象还是强类型– 自动推导的几种常见形式● auto: 最常用的形式,但会产生类型退化● const auto / constexpr auto: 推导出的是常量/ 常量表达式类型● auto& : 推导出引用类型,避免类型退化● decltype(exp) :返回exp 表达式的类型(左值加引用)● decltype(val) :返回val 的类型● decltype(a
2021-08-03 15:53:27
457
原创 嵌入式板卡支持中文显示的方法,修改busybox
目录一、问题描述二、解决方法2.1 修改busybox源码2.2 修改busybox配置项glibc.config三、测试本文以Hi3798板卡为例。一、问题描述如上图所示,????1.jpg(中国1.jpg)显示出现问题。通过查找,是由于高版本中busybox中的ls等指令显示中文(UTF-8编码)出现问题。无法显示一般都是因为编码问题,板卡系统编码以及电脑终端的编码。二、解决方法2.1 修改busybox源码进入SDK/third_party/o.
2020-12-25 15:18:45
849
原创 TS流基本知识【HI3798 AVPLAY播放TS流】
AVPLAY(Audio Video Player)模块整合SDK 内部音视频播放相关模块,提供给用户基本播放业务相关的接口。AVPLAY 在典型媒体播放终端方案中的位置如图所示。AVPLAY 主要依赖ADEC/VDEC/DEMUX 等模块,其向应用或中间件播放器提供基本的播放业务相关接口。首先在官方给的sample_ipplayer例程中。首先需要进行一系列的初始化工作,在这里就不一一讲述。主要是讲述如何使用Demux模块来进行节目搜索。一、TS流相关知识 数字电视机顶盒接收到的是一段段.
2020-12-15 08:23:38
3147
原创 【HI3798】移植AP6356S驱动 (SDIO接口WIFI)
一、内核配置打开终端,运行环境脚本,再进入SDK的内核目录SDK/source/kernel/linux-4.4.y目录下,执行make ARCH=arm hi3798mv200_defconfigmake ARCH=arm menuconfig1.1 配置WEXTWEXT 即Wireless Extension,是内核中WiFi 驱动和用户态进程的标准接口。有的内核版本中,WEXT 没有直接的配置选项,需要在Device Drivers->Network device su
2020-07-08 12:24:54
2438
原创 【STM32 】通过ST-LINK utility 实现片外FLASH的烧写
目录前言一、例程参考及讲解1.1 Loader_Src.c文件1.2 Dev_Inf.c文件二、程序修改三、实测参考前言在单片机的实际应用中,通常会搭载一些片外FLASH芯片,用于存储系统的一些配置文件,比如说图片、字体、配置文件等。在出厂设置时,如何通过离线的方式将这些配置文件烧录至片外FLASH中成为关键。当然,在大批量生产中,可以先通过FLASH离线烧录工具将所需的文件烧写至FLASH,再进行贴片,但如何在小批量生产中实现片外FLASH的离线烧录呢?且听本文细细道来
2020-05-27 20:21:36
19597
8
原创 【STM32】 利用paho MQTT&WIFI 连接阿里云
ST联合阿里云推出了云接入的相关培训(基于STM32的端到端物联网全栈开发),所采用的的板卡为NUCLEO-L4R5ZI板,实现的主要功能为采集温湿度传感器上传到阿里云物联网平台,并可以通过物联网平台设置端的温度阈值。对于STM32端的开发,主要涉及两面:基于paho MQTT协议栈连接阿里云;基于Linkkit 协议栈连接阿里云。本文主要讲述基于paho MQTT连接阿里云相关知识。在这里部...
2020-03-13 22:34:48
3470
原创 【STM32】STM32 变量存储在片内FLASH的指定位置
在这里以STM32L4R5为例(官方出的DEMO板),将变量存储在指定的片内FLASH地址(0x081F8000)。一、MDK Keil软件操作uint8_t version[12] __attribute__((section(".ARM.__AT_0x081F8000")))= {0x11,0x12,0x13,0x14,0x15,0x16};uint8_t version1[12] __...
2020-03-10 14:34:03
15223
2
原创 Hi3798移植4G模块(移远EC20)
Hi3798移植4G模块(移远EC20)前言USB驱动修改添加VID和PID信息添加空包处理机制添加复位重连机制修改内核配置GoBiNet测试程序前言本次系统采用的是linux4.4.主要参考文件为移远官方文件。在虚拟机中kernel位于/hi3798/HiSTBLinuxV100R005C00SPC050/source/kernel/linux-4.4.y/。所以令[KERNEL]=/hi3...
2019-06-10 23:56:02
4265
2
原创 Hi3798 PWM输出控制背光
一、PWM配置说明Hi3798 具有3个PWM输出端口。通过查阅《Hi3798M V200 低功耗方案 使用指南.pdf》可得:通过查阅Hitool工具可以查看到三个PWM端口的寄存器分别为:通过原理图可得,采用PWM0来控制背光。所以在程序当中需要将GPIO2_1(ioshare_17)服用为PMC_CORE0。devmem w 0xF8A21044 0x000...
2019-05-28 09:56:24
2094
1
原创 Hi3798 openSSH的移植
前言在编译海思SDK时,会自动编译openssl,zlib,故无需重复编译这两者。编译编译openssh本文下载openssh-7.3p1版本,将其下载至虚拟机tar -xvf openssh-7.3p1.tar.gz./configure --host=arm-linux --prefix=/usr/local/openssh --with-zlib=/hi3798...
2019-02-28 18:52:50
3172
1
原创 Hi3798 RS485测试
目录一、虚拟机测试环境搭建二、开发板挂载网络文件系统三、RS485测试附录本文档中利用交叉编译工具编译一个app程序用于测试RS485通信,需利用nfs挂载的形式该app下载至开发板中。一、虚拟机测试环境搭建安装NFS组件sudo apt-get install nfs-kernel-server建立共享文件夹mkdir /nfs设置共享目录修改虚拟机...
2018-12-07 10:01:08
1118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人