- 博客(46)
- 资源 (15)
- 收藏
- 关注
原创 cortex_m7中DSB和ISB的使用
_DSB作用:保证后面的指令执行前,所有的内存内存操作已真实生效(例如存储于write buffer中的指令,已执行;以及正在执行的读写指令已执行完成,完成即内存已发生改动)。此例中,在设置SVC进入pending状态,DSB和ISB确保了,SVC中断服务在__ISB执行结束后立即执行。__ISB作用:前面的指令执行完成,并清空流水线中的指令。
2024-11-14 17:22:47
216
原创 freertos cortex_m7的basepri提升优先级操作为何需要在临界段
ARM官方存在相关的手册,例如“cortex_m7_software_developers_errata_notice_r0_v4”,里面记录了bug内容。围堵此bug的方法,为在关闭中断的情况下,来对basepri抬升。CPUID寄存器会存储cortex_m7的内核版本,bit23:bit20用于指示处理器版本,bit3-bit0用于指示修订版本,针对r0p1,则bit23-bit20为0,bit3-bit0的值为1。cortex_m7有多个内核版本,在r0p1版本中有一个bug。
2024-11-14 10:45:38
900
原创 C语言输出基本类型的占用字节数
#include <stdio.h>int main(int argc, char **argv){ printf("sizeof(char) = %d\n", sizeof(char)); printf("sizeof(signed char) = %d\n", sizeof(signed char)); printf("sizeof(unsigned ...
2019-12-30 10:15:33
2137
原创 perf火焰图
此文件中也摘要了其他网站部分内容备注:仅适用perf命令,也能看到性能信息,火焰图会更加直观。当适用产生火焰图比较费劲时,可直接适用perf命令看性能信息第一、 查看linux系统是否支持perf 如果支持linux系统,linux内核必须让CONFIG_HAVE_PERF_EVENTS=yCONFIG_PERF_USE_VMALLOC=y在已运行中的linux系统...
2019-12-26 11:39:48
507
原创 libase64移植
目标为mips平台,需要在CFLAS中添加"-mxgot"选项,否则报错“lib/libbase64.o: CALL16 reloc at 0x618 not against global symbol”1、编译源码进入源码根目录,执行#make CC=mips64el-loongson-linux-gcc LD=mips64el-loongson-linux-ld ...
2019-12-03 16:01:55
355
原创 linux C语言信号和操
仿照QT中信号和操的底层实现机制,将其在纯C的linux平台下实现,特点:1、采用Qt底层实现方式,实现纯C试下你的2、事件和槽函数机制3、事件驱动4、信号和操的连接方式可以有两种“直接连接”和“队列连接”直接连接:发射信号方法退出时,已经执行完成,队列连接:发送信号后,由事件驱动来完成槽函数调用。后期改进:当前函数的参数使用结构体传递参数,以后改进将使用("%d%...
2019-11-25 09:44:52
304
原创 linux C语言finsh
环境: 主机:ubuntu16.04 编译器:arm-xilinx-linux-gnueabi-gcc 目标机:zynq7000,32bit 版本:4.9.2环境: 主机:ubuntu16.04 编译器:gcc 目标机:本机,64bit 版本:5.4.0 主机上编译,使用命令时必须把下面内容中的"arm-xilinx-l...
2019-11-25 09:25:11
471
原创 QT程序发布打包
第一、软件发布1、发布命令进入执行程序文件夹,运行如下命令即可打包#windeployqt 程序名第一、软件打包成安装包 打包是使用的软件为"inno Setup Compiler"打开"inno Setup Compiler"软件,软件界面如下图所示:点击菜单栏"File"->"New",进入如下界面:直接点击"Next",输...
2019-09-28 16:26:53
139
原创 jsonrpc-c编译
for X861、#autoreconf -i如果报错连续执行两次,执行后会产生configure文件。2、打开configure文件,在12658行附近的内容,更改如下:# Check whether --with-libev was given.if test "${with_libev+set}" = set; then : withval=$with_libev...
2019-08-15 13:53:50
610
原创 挂载nfs文件系统
1. 从设备挂在开发机目录 1.1. Ubuntu启动nfs服务器 假设本机ubuntu的IP地址为”192.168.1.77”,使用root用户登录 使用如下命令启动nfs服务器 #sudo /etc/init.d/nfs-kernel-server restart 备注:前提需要安装nfs服务器,“#ps –e”出现nfsd进程说明,已经安装nfs服务器 在/et...
2019-08-10 10:08:45
658
原创 SNMP 使用snmptrap发送trap帧
#/bin/shOidWarnHead=1.3.6.1.4.1.53151.2.15.4.1targetIp=172.16.101.34targetPort=162trapOid=1.3.6.1.4.1.53151.3.1warnIdOid=${OidWarnHead}.1.0warnIdVal=1500000200warnSnOid=${OidWarnHead}.2.0...
2019-08-08 19:12:25
2418
原创 VUE前端框架学习-自己已存在vue测试工程的开发要点
我的vue.js前端test工程,学习记录第一、重要开发工具vue:是一套用于构建用户界面的 前端框架。学习网址:https://cn.vuejs.org/v2/guide/vuex:是一个专为 Vue.js 应用程序开发的状态管理模式,集中式存储管理应用的所有组件的状态。学习网址:https://vuex.vuejs.org/zh/vue-cli:是用vue开发的脚手架,可方便...
2019-08-08 11:42:20
200
原创 paho.mqtt.c移植
1、make CC=arm-linux-gcc2、编译出的库文件在"build/output"文件夹下3、用户应用使用的头文件存放在"src"目录,包括MQTTAsync.h MQTTClient.h MQTTClientPersistence.hMQTTProperties.h MQTTReasonCodes.h MQTTSubscribeOpts.h...
2019-08-05 10:35:01
1233
1
原创 socat 移植与简单实用
socat的版本为socat-1.7.3.31、./configure --host=x86_64 CC=arm-linux-gcc --prefix=$PWD/arm2、make3、make install实例:第一、一端是unix服务器,一端是tcp客户端unix-server<->tcp-client1、创建一个本地tcp服务器...
2019-08-05 10:12:32
1105
原创 socat 实现串口转网络(监听)
1、首先建立虚拟串口,命令如下:#socat -d -d PTY PTY 返回如下:2019/08/02 11:07:08 socat[57130] N PTY is /dev/pts/92019/08/02 11:07:08 socat[57130] N PTY is /dev/pts/102019/08/02 11:07:08 socat[57130] N st...
2019-08-02 14:37:46
5345
原创 SSH建立隧道,网络数据包转发
第一、本地端口转发结构实例:内网无法上网通过能上网的某个设备连接外网服务器设备C(内网客户端) <---局域网---> 设备B <-----外网--->设备C(外网服务器) 设备A 设备B 设备C ...
2019-08-02 11:37:28
477
原创 nc命令 实现网络转发
第一、代理1情形描述: 1、客户端A(ClientA)和客户端B(ClientB),实现相互通信 2、ClientA连接到的端口号为6000,ClientB连接到的端口号为7000 3、ClientA和ClientB可以放在不同机器 实现说明: 1、借助代理,实现数据的转发 2、由于管道是单向传输,若需要实现ClientA和ClientB双向通...
2019-08-02 11:33:05
5652
原创 socat 在linux上创建虚拟串口
1、下载socat源码,并安装2、执行如下命令,创建两个虚拟串口#socat -d -d PTY PTY该命令的回复提示如下:若是虚拟的串口一直有效,必须使socat一直运行。当前产生的虚拟串口为"/dev/pts/9"和"/dev/pts/10"。这两个串口可互相通信了。3、测试 使用"minicom -D /dev/pts/10 -b ...
2019-08-02 11:12:40
6450
1
原创 C/C++嵌入式远程调试
1、在远程主机启动命令(在远程主机上执行)gdbserver 172.16.200.13:10000 ./goahead -v $PWD/webs/dist 172.16.200.13:802、本地主机启动命令(在X86平台上执行)arm-linux-gdb ./goahead命令执行后,将会进入gdb的命令操作输入"target remote 172.16.200.1...
2019-07-31 11:19:53
385
原创 python3、django 嵌入式移植方法
主机:X86-64,嵌入式平台:zynq,gcc版本:4.9.2$、解压Python-3.7.2.tgz,此为python的源码包,解压后出现"Python3.7.2"文件夹$、进入python3.7.2文件夹,创建"zynq-install"文件夹。$、执行下面的命令,产生Makefile文件../configure CC=arm-xilinx-linux-gnueabi-gcc \...
2019-06-10 15:48:18
1460
原创 C语言GDB 远程调试技术
1、在远程主机启动命令(在远程主机上执行,远程主机IP地址:172.16.200.13)gdbserver 172.16.200.13:10000 ./goahead -v $PWD/webs/dist 172.16.200.13:802、本地主机启动命令(在X86平台上执行)arm-linux-gdb ./goahead命令执行后,将会进入gdb的命令操作输入"targe...
2019-02-18 14:03:14
563
原创 WIFI模块使用心得
WIFI模块使用心得 作者:JCYQQ:1157525568时间:2004:05:12WIFI模块的名字:KIT-V2.3 此WIFI模块有四种模式:默认模式、串口到以太网模式、串口到WIFI client模式、串口到WIFI AP模式。如何进入网页设置界面:1、复位出厂设置后,模块处于默认模式,通模块的以太网口。2、登录模块产生的热点,也可以进入网页
2014-05-29 22:44:54
9803
转载 关于字节对齐,和程序优化有关
[转]关于字节对齐,和程序优化有关 值得一看一.什么是字节对齐,为什么要对齐 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的
2013-05-08 11:27:06
667
原创 uCOS3空闲任务
作者 :JCYQQ :1501614847优快云 :JCY-JCY来自09级安徽宿州学院电子创新实验室此文中对uCOS3空闲的理解,若有错误之处请指出,不胜感激!此文中所有内容仅是个人见解,不代表任何机构!原来也分析过uCOS2的源码,对uCOS2中使用的对象在uCOS2当中怎么运作从源码级进行了解析。其实在《嵌入式实时操作系统 uC/OS2》这本书中也有,这本书中提
2013-03-31 10:32:42
2181
1
原创 uCOS2内存管理
uCOS2内存管理 第一、内存管理数据架构1第二、OS_MemInit函数说明3第三、OSMemCreate函数说明4第四、OSMemGet函数说明6第五、OSMemPut函数说明6第六、OSMemQuery函数说明7第七、OSMemNameGet和OSMemNameSet函数说明8作者:JCY来自09级安徽宿
2013-01-08 08:52:51
2208
原创 uCOS2调度原理总结
uCOS2内核调度原理作者:JCY来自09级安徽宿州学院电子创新实验室此文中对uCOS2内核调度的理解,若有错误之处请指出,不胜感激! 在uCOS2操作系统当中有程序会处于五种状态:运行态、就绪态、挂起态、睡眠态、中断服务态。运行态:某一个任务正在运行,独占CPU的使用权。l 就绪态:某一个任务已经有了运行的准备,可以随时被调度。l 挂起态:某一个任务需要等
2013-01-06 14:54:46
3414
1
原创 uCOS2_CPU利用率的实现
uCOS2中的利用率作者:JCY此文中是对统计任务理解,若有错误之处请指出,不胜感激!在uCOS2操作系统当中可以得到CPU的利用率,计算利用率是通过一个任务来计算的,任务的名字叫“OSTaskStat()”.如果要使用任务需要将OS_CFG.H头文件中的OS_TASK_STAT_EN宏定义为真。这样你就可以在程序中使用任务统计功能了。如果应用程序打算使用统计任务,那么你必须在
2013-01-06 14:49:25
2727
1
原创 学生管理系统
/***************************************************学生管理系统***************************************************/#include#include#include#define YES 1#define NO 0#define DEBUG NO //是
2012-12-15 09:39:21
635
原创 冒泡排序法
#include#include#include#define YES#define NO#define DEBUG YES//调试信息#define N 5int main(int argc, char *argv[]){ int i , j; int array[N] = {6 , 5 , 4 , 3 , 2 }; int temp; f
2012-12-15 09:32:27
437
原创 STM32第二功能引脚映射
STM32部分外设的第二功能引脚映射作者:JCY时间:2012年12月11日STM32F是ST(意法半导体公司)的产品,本芯片的设计支持了芯片上部分外设第二功能的引脚映射。这为设计STM32的电路板提供了方面,大大简化了电路的设计。当第一次看到AFIO功能的时候感到很困惑,一直不理解,但是最近突然明白了。不敢独享,写此文章与大家分享。本文章纯属个人的理解,如有任何的错误之处请指正,
2012-12-13 19:31:36
4731
原创 QT常用的类和函数总结
作者:JCY 此文是在学习QT的时候所用到的一些函数,因为函数在一段时间后会遗忘,所以将他们记录下来。 QPushButton setText("OK"); 设置按键显示的姓名,例如设置为“OK”setShortcut( QKeySequence(tr("Ctrl+k")) ) //设置按钮的快捷键,例如:设置为“Ctrl + k” 。setEnabled(true)
2012-11-29 16:52:41
4974
原创 QT应用软件ARM板上运行
QT程序如何在ARM板上运行作者:JCY此文章改动了别人的,并添加了一些非常重要的内容,以供大家参考。在此文中如有错误之处,请给予指正。 让QT应用软件在开发板上运行显示 写这篇文章,主要是为了说明怎么让PC机下编译好的QT程序移植到板子上运行。在说明之前,我们要了解一个事情,就是QT。QT是一个跨平台的开发工具,具有很好的移植性,它所依赖的库文件在PC机上和在ARM
2012-11-29 16:40:45
1868
原创 S3C2440,Linux,LCD驱动
LCD驱动学习总结到了神秘的LCD驱动了,信息还真有点胆怯,但是还是不得不走下去。对刚刚学习的linux驱动坐一下总结,毕竟是Linux内核当中的东东,而且是那么的繁琐。做一总结,等用笔记把学过东西几下来,这样就不会忘了。哈哈!那就开始!!!在编写裸机LCD程序的时候,首先就是硬件初始化操作。有一个寄存器当中存放了帧缓冲的起始地址。这个参数是非常重要的。当配置好硬件后,帧缓冲中的数
2012-11-29 16:31:45
697
原创 触摸屏驱动总结
触摸屏驱动 作者:JCY 此文章是学习了触摸屏一段时间后所写,在文中如有错误之处,请指正,将不胜感激。开始将触摸屏驱动吧!在Linux的内核中触摸屏驱动是基于输入子系统来设计的。现在先说一下输入子系统。原来编写的字符设备驱动模块中会定义一文件操作接口变量,通过该变量中的函数指针成员来操作相应的硬件。你也许会发现他们的程序框架是一样的。各种输入设备也能够使用字符设备驱动框架,
2012-11-29 16:26:31
770
原创 Linux下平台设备驱动
第一、 首先进入\arch\arm\plat-s3c24xx\devs.c文件中,在最后一行定义设备/* my_led device author : jiang chuan yu*/static struct resource s3c_my_led_resource[] = {[0] = {.start = S3C24XX_PA_GPIO,.end = S3C
2012-11-29 16:22:53
1069
原创 如何将驱动编译进入内核
如何将驱动编译进入内核当你以模块的形式编译模块并且能够达到预想的效果,那么这样就可将模块编译到内核了,将模块编译到内核是很简单的。第一、 进入linux-2.6.30.9/drivers文件夹,在文件夹中建立一个文件夹(名字可以和驱动的文件名一致)char_led。第二、 将能够实现预想效果的驱动文件char_led.c复制到此文件夹char_led文件夹下第三、 在char_
2012-11-29 16:16:22
614
原创 linux下的字符设备驱动
字符设备驱动总结作者:JCY此文章是学习了一段时间的linux字符设备驱动所写,在文中如有错误之处请指正,将不胜感激。 写了裸机那么长时间了,终于接触到了linux 驱动程序的设计,当然最简单的驱动程序没有涉及到与设备相关的知识,知识了解一下模块的加载。说到模块的加载,就想写C语言和C++接触到的一个程序hello一样,我们第一个接触到的最简单的模块的加载也是hello。我写了
2012-11-29 16:14:31
496
原创 S3C2440的汇编中常用的位置无关和位置相关指令
位置无关与位置相关看了一段时间的S3C2440的bootloader后,感觉在bootloder程序中经常会用到B,BL指令。他们是位置无关的代码,指令中所跳转的目标地址用基于当前PC的偏移量来表示,与链接时分配给地址标号的绝对地址值无关,因而代码可以在任何位置进行跳转,实现位置无关性。在bootloder也用到了位置无关的指令LDR(只对PC操作时才位置无关),例如LDR PC,
2012-11-29 16:07:48
1150
linux平台运行的finsh代码,支持64bit平台
2019-12-28
linux平台C语言信号和操的实现
2019-11-25
linux平台运行的finsh代码
2019-11-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人