![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 50
kof98765
熟练掌握C/C++语言,熟悉Windows,linux,Mac开发环境;<br>熟练使用Qt编写windows,linux,mac的桌面应用,网络程序等;<br>熟练使用halcon处理图像,有开发视觉软件经验;<br>熟练使用python开发桌面应用,<br>熟练使用lua+C or C++混合编程;<br>熟悉linux驱动框架,有编写底层驱动,移植等经验<br>熟悉cortex-M3,ARM9,cortex-a8等处理器架构(2440,s5pv210,a20,4412),能看懂原理图,datasheet,根据原理图操作硬件;
展开
-
Linux C编程:打造一个插件系统
好吧,自己把game.c里面的内容改改,然后编译出来,换个名字,然后在missionlist.txt里面加一行,就ok了。每次想加新关卡,都需要重新编译一次,再下载一次,这个流量嘛,1+1.1+1.2+1.3,每次加个0.1,都够你受的。最著名的就数魔兽大脚插件啦,还有vim插件啦,eclipse插件啦,等等。举个例子,你开发了一个游戏,一开始只有三个关卡,分享给了你的小伙伴玩。大家玩得很爽,但很快,游戏通关了,还想玩,这时候怎么办呢?插件,很多人用过,比如游戏插件,编辑器插件这些,原创 2024-07-23 11:45:39 · 428 阅读 · 0 评论 -
61850服务构建之纯代码构建法
用c语言写一个61850服务器原创 2024-06-14 10:04:47 · 338 阅读 · 0 评论 -
关于在imx6ul上使用lvgl会定时黑屏的问题
最近将lvgl移植到了imx6ul上,效果相当惊艳啊,整个应用编译出来只有2M,比起QT那50M的基础库,这黑屏的现象也很慢,如果是定时更新内容的控制,就会一直有,那些初始化之后就不动的控件全黑了,找了半天才发现,这是关于tty的一个故事,这个故事相当长,咱就不描述了,下面给出解决方案。只要在程序运行的开头,加上上面这一段代码,就可以避免出现我这种奇葩的问题了。不知道香了多少倍,但也出现了一个小问题,程序跑了大概10分钟之后会黑屏。这个问题困扰了我两天,可值钱了呢。原创 2023-10-11 08:40:56 · 299 阅读 · 0 评论 -
笔记:移植xenomai到nuc972(2)
但我是用busybox搭的文件系统,直接就是root,不存在权限问题,所以问题出在应用上,经过一番调试后发现,问题出在xenomai的应用库上,具体位置在xenomai/kernel/cobalt/posix/process.c,第二个问题就是启动慢的问题,经过一番日志打印,追踪到是sys_mount加载过慢的问题,因为使用过几个实时系统都出现了同样问题,猜测是中断抢占了内核线程,导致读取yaffs文件的操作效率变低,等加载完init函数再切换成普通优先级,这样系统启动速度又回来到了原来的2秒时代。原创 2023-08-17 15:44:10 · 228 阅读 · 0 评论 -
笔记:移植xenomai到nuc972(1)
接着就是修改arch/arm/kernel/ipipe_tsc.c,需要添加一个__ipipe_freerunning_24,因为972的定时器数据是24位的,加完之后,还需要在arch/arm/ker/ipipe_tsc_asm.S里面添加对应的汇编代码,汇编代码参考32位的,只是多了一个移8位的操作。执行/opt/arm/xenomai/bin/latency时内核会崩溃,原因是网卡驱动和xenomai不兼容,正常应用应该是正常的,待测。整完之后,开始编译xenomai了,安装步骤参考。原创 2023-08-15 16:13:19 · 367 阅读 · 0 评论 -
mosquitto的最大连接数只有1024?看我如何解决它
这个坑肯定有人踩过原创 2021-12-17 09:08:33 · 1941 阅读 · 0 评论 -
血的教训,系统变砖了,linux下U盘自动挂载的那些事
系统变砖了?原创 2021-12-16 15:40:49 · 1120 阅读 · 0 评论 -
AP6236调试-网卡检测不到,数据接收不到等问题
希望大家都能顺利跳坑原创 2021-12-10 17:57:17 · 1310 阅读 · 0 评论 -
嵌入式linux下搭建snmp服务,编写自定义mib库,支持ipv6
做这个需要交叉编译net-snmp在官网http://www.net-snmp.org下载源码包,我用的是5.7.3配置交叉编译器,我的交叉编译器是在/usr/local/arm-2014.05/binexport PATH=$PATH:/usr/local/arm-2014.05/bin解压源码包之后,cd net-snmp-5.7.3,执行./configure --build=i686-linux --host=arm-linux CC=arm-linux-gcc --with..原创 2021-10-21 15:29:07 · 1619 阅读 · 0 评论 -
记一次树莓派安装retropie的扩容问题
买了个树莓派zero wh,安装了retropie系统,发现系统只有200M的存储空间,但我用的是128G的tf卡,第一时间就是使用resize2fs来重置空间,结果没反应,想着树莓派是不是有什么特殊的扩容方法,一个个的试了没效果使用df命令后,注意到/dev/mmcblockp2没有挂在根目录上,根目录的文件系统类型是overlay,后来在/boot/cmdline.txt 里面发现有boot=overlay这一条,想着试试不会怀孕的态度,删掉了这几个字母重启后,发现根目录已经正确地挂载在原创 2021-01-23 08:45:24 · 524 阅读 · 1 评论 -
使用git上传并自动部署服务端代码
一、git服务器搭建安装gitapt-get install git创建git用户adduser gitpasswd git //修改git用户密码创建git仓库$ cd /home$ mkdir git$ mkdir ./git/.ssh$ touch./git/.ssh/authorized_keys$ cd /home/git$ git init --bare test.git //初始化仓库$ chown -R git:git ../git$ chmod 700原创 2021-01-20 17:36:16 · 301 阅读 · 0 评论 -
IEC61850建模说明
1.概述IEC61850的数据建模,主要是看IEC1850标准的第7部分,变电站和馈线高备的基本通信结构(7-1,7-2,7-3,7-4)数据建模,实际上就是将设备的点表按照IEC61850标准的规则编写的一份点表文件,该点表以XML的格式描述,后缀名为.icd,另一个名字叫智能电子设备能力描述文件1.1 IEC61850服务以下是61850的服务与传统功能的对比列表:服务与传统变电站功能IEC61850服务传统功能报告服务遥信、遥测控制服务遥控、遥调定原创 2021-01-20 17:32:54 · 14746 阅读 · 5 评论 -
61850构建流程
要搭建一个61850服务器,可以通过libiec61850这个开源库实现首先是源码下载,网址为libiec61850.com/libiec61850/downloads,此文使用的是libiec61850-1.4.2.1.tar.gz接下来是编译tar xvf libiec61850-1.4.2.1.tar.gzcd libiec61850-1.4.2.1mkdir buildcd buildexport TOOLCHAIN /usr/local/arm-6ul/bin/arm-none-gn原创 2021-01-20 17:29:53 · 3971 阅读 · 2 评论 -
动环监控系统中B接口的实现-c语言版
B接口是使用http+xml+ftp形成的一套通讯框架,一般使用gsoap库来开发首先是准备gsoap库,编译方法这里就不细说了,这里稍微说下用法开发环境是ubuntu 64位,测试环境是也是ubuntu64位gsoap 用的是2.8.22编译完成后,会生成wsdl2h,soapcpp2两个应用程序动环监控官方给了我两个wsdl文件,分别是客户端和服务端的FSUService.wsdl...原创 2020-04-11 12:45:32 · 2242 阅读 · 3 评论 -
qt QSettings 用法总结
用户对应用程序经常有这样的要求:要求它能记住它的settings,比如窗口大小,位置,一些别的设置,还有一个经常用的,就是recentfiles,等等这些都可以通过Qsettings来实现。 我们知道,这些settings一般都是存在系统里的,比如windows一般都写在系统注册表或者写INI文件,mac系统一般都在XML文件里,那么按照一般的标准来说,许多应用程序是用INI文件来实现转载 2015-01-15 11:02:39 · 696 阅读 · 0 评论 -
传说中的QT布局
1、QFormLayout:表单布局,顾名思义就是实现表单模式的布局。表单就是提示用户进行交互的一种模式,其主要有两个列组成,第一个列用于显示信息,给予用提提示,一般叫做label域,第二个是需要用户选择输入的,一般叫field域。表单就是很多由这两项/两列内容组成的行的布局。label与field关系就是label是关联field的。 表单布局完全可以使用表格布局实现,是一种多行两列的列转载 2014-12-06 15:00:56 · 8804 阅读 · 0 评论 -
QT鼠标事件
1、QMouseEvent中的坐标QMouseEvent中保存了两个坐标,一个是全局坐标,当然另外一个是局部坐标。全局坐标(globalPos())即是桌面屏幕坐标(screen coordinates),这个跟windows下的调用getCursorPos函数得到的结果一致。局部坐标(pos())即是相对当前active widget的坐标,左上角坐标为(0, 0)。补充一个转载 2014-12-06 14:10:34 · 737 阅读 · 0 评论 -
linux设备驱动之USB主机控制器驱动分析(二)
首先来看一下这个函数要做什么事情:我们在前面说过,int128,int64,int32……int4,int2,int1这样8个QH.我们在后面看到.会将 uhci->frame的物理地址存放到UHCI控制器的Frame List Base Address Register中.所以现在要做的事情就是将这些QH与uhci->frame[ ]关联起来.必须要按照相应的时间间隔将QH插入到uhci转载 2014-07-30 10:21:15 · 1281 阅读 · 0 评论 -
内核选项说明
Code maturity level options代码成熟度选项Prompt for development and/or incomplete code/drivers显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择General setup常规设置Local version - append to kernel release在内核版本后面加上自定义的版本字符转载 2014-02-21 12:37:09 · 3728 阅读 · 0 评论 -
内核模块编译怎样绕过insmod时的版本检查
在開發kernel driver時,總是會遇到討人厭的vermagic檢查,只要目前在run的kernel版本跟driver編譯時用的kernel版本不一致,就沒辦法insmod。bash-3.2# insmod sdio.kosdio: version magic '2.6.28-271-gec75a15 preempt mod_unload modversions ARMv转载 2014-02-20 15:36:22 · 1147 阅读 · 0 评论 -
cfg80211的kernel架构(基于Linux 3.08)之sta
1, 大致框架2, 几个主要流程a) malloc & init(softmac)内存分布struct wiphystruct ieee80211_localDriver private class结构体关系初始化顺序module_in转载 2014-07-21 10:09:24 · 4157 阅读 · 0 评论 -
Linux的GDB远程调试的实现
远程调试环境由宿主机GDB和目标机调试stub共同构成,两者通过串口或TCP连接。使用GDB标准远程串行协议协同工作,实现对目标机上的系统内核和上层应用的监控和调试功能。调试stub是嵌入式系统中的一段代码,作为宿主机GDB和目标机调试程序间的一个媒介而存在。 就目前而言,嵌入式Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机程序转载 2014-05-27 13:44:44 · 874 阅读 · 0 评论 -
vim 的中文乱码解决
由于在windows下默认是gb编码,而我的vim默认是utf-8(gedit默认也是utf-8),所以打开会成乱码。修改了一下配置文件,使vi支持gb编码就好了。$vi ~/.vimrclet &termencoding=&encodingset fileencodings=utf-8,gbk$:wq再次打开vi,显示就正常了。vim中编辑不同编码的文件时需要注意的一些地转载 2014-03-07 11:43:57 · 729 阅读 · 0 评论 -
iptables的NAT设置
(一)Iptables 的使用语法 在使用iptables的NAT功能时,我们必须在每一条规则中使用"-t nat"显示的指明使用nat表。然后使用以下的选项::1. 对规则的操作加入(append) 一个新规则到一个链 (-A)的最后。 在链内某个位置插入(insert) 一个新规则(-I),通常是插在最前面。 在链内某个位置替换(replace) 一条规则 (-R)。在转载 2014-02-24 10:52:07 · 3792 阅读 · 0 评论 -
Ubuntu 12.04的SWAP设置
我在安装ubuntu 12.04 LTS的时候,因为磁盘分区问题,在安装的时候没有设置SWAP分区,后来在使用过程中,时而出现系统运行不流畅的情况,看来SWAP分区还是需要的。 www.2cto.com 1. 在ubuntu中配置使用新创建的Swap分区Command list:# 查找Swap分区的UUIDsudo blkid转载 2014-07-21 14:47:49 · 539 阅读 · 0 评论 -
linux下IPTABLES配置详解
如果你的IPTABLES基础知识还不了解,建议先去看看.开始配置我们来配置一个filter表的防火墙.(1)查看本机关于IPTABLES的设置情况[root@tp ~]# iptables -L -nChain INPUT (policy ACCEPT)target prot opt source destinat转载 2014-02-24 10:13:21 · 573 阅读 · 0 评论 -
电源管理之regulator机制流程
现在android/linux为模块设备供电有两种,一种GPIO供电,另一个就是电源管理芯片。电源管理芯片可以为多设备供电,且这些设备电压电流有所同。为这些设备提供的稳压器代码模型即为regulator。下面通过下面三个过程分析regulartor供电机制:1.分析regulator结构体2.regulator 注册过程3.设备使用regulat转载 2014-07-28 11:40:58 · 970 阅读 · 0 评论 -
linux设备驱动之USB数据传输分析 二
3.2:控制传输过程1:root hub的控制传输在前面看到,对于root hub的情况,流程会转入rh_urb_enqueue().代码如下:static int rh_urb_enqueue (struct usb_hcd *hcd, struct urb *urb){ //如果是中断传输的端点 if (usb_endpoint_xfer_int(&urb-转载 2014-07-29 23:17:37 · 3137 阅读 · 0 评论 -
linux设备驱动之USB主机控制器驱动分析 (一)
一:前言Usb是一个很复杂的系统.在usb2.0规范中,将其定义成了一个分层模型.linux中的代码也是按照这个分层模型来设计的.具体的分为 usb设备,hub和主机控制器三部份.在阅读代码的时候,必须要参考相应的规范.最基本的就是USB2.0的spec.它定义了USB协议.另外的一个 是USB控制器的规范.有UHCI,EHCI,OHCI三种.其中UHCI是Intel推出的一种USB控制器转载 2014-07-30 10:17:08 · 1287 阅读 · 0 评论 -
linux设备驱动之USB数据传输分析(之四)
uhci_scan_schedule()是这个函数的核心操作.也是经常出现的一个函数.代码如下:static void uhci_scan_schedule(struct uhci_hcd *uhci){ int i; struct uhci_qh *qh; /* Don't allow re-entrant calls */ //如果正在进行s转载 2014-07-30 10:14:34 · 781 阅读 · 0 评论 -
linux设备驱动之USB数据传输分析 一
本文出处:http://ericxiao.cublog.cn/三:传输过程的实现说到传输过程,我们必须要从URB开始说起,这个结构的就好比是网络子系统中的skb,好比是I/O中的bio.USB系统的信息传输就是打成URB结构,然后再过行传送的.URB的全称叫USB request block.下面从它的接口说起.3.1:URB的相关接口1:URB的创建URB的创建是由usb转载 2014-07-29 23:18:10 · 3333 阅读 · 0 评论 -
linux设备驱动之USB数据传输分析 三
3.4:中断传输过程1:root hub的中断传输在usb_hcd_submit_urb()àrh_urb_enqueue()中:static int rh_urb_enqueue (struct usb_hcd *hcd, struct urb *urb){ if (usb_endpoint_xfer_int(&urb->ep->desc)) retu转载 2014-07-29 23:19:13 · 2105 阅读 · 0 评论 -
linux设备驱动之USB数据传输分析(之五)
也许,有人会有这样的疑问:对于控制传输,它不也是基于toggle的纠错么,为什么它就不需要修改后续的包的toggle值呢?这是因为,控制传输的toggle都是从1开始的,删除掉当前的urb,也不会对后面的发包造成影响.之后,处理完之后,将无用的td删除.跟踪一下toggle的修正过程.对应的函数为uhci_fixup_toggles().如下所示:stati转载 2014-07-30 10:13:53 · 1272 阅读 · 0 评论 -
LINUX 下USB摄像头设置
Linux内核中已经带有很完善的USB摄像头驱动,支持几乎所有的USB摄像头,我们只需要配置内核,选择上相应的Sensor型号即可。配置内核,支持USB摄像头:Device Drivers ---> Multimedia support ---> Video For Linux[*] Enable Video For Linux API 1 (D转载 2014-01-17 14:30:32 · 9923 阅读 · 0 评论