- 博客(830)
- 资源 (7)
- 收藏
- 关注
原创 解决imx6ull开发板加载驱动disagrees about version of symbol module_layout失败问题
一、环境1、 硬件 100ask_imx6ull单板。2、软件环境,提供的开发环境。二、报错信息hello_drv: disagrees about version of symbol module_layoutinsmod: ERROR: could not insert module hello_drv.ko: Invalid module format三、解决1、查看板卡的内核信息cat /proc/version2、更新下内核使用Buildroot编译出的emmc.im
2022-02-12 11:23:26
811
原创 uboot编译报错 dtc: command not found解决办法
编译uboot 报错解决办法sudo apt-get install -y device-tree-compiler再次编译,编译成功
2021-01-12 22:54:59
1625
原创 AD导出PDF内容显示不全解决办法
DXP—>Preferneces—>Schematic—>General下取消Render Text with GDI+
2021-01-12 09:47:01
6353
原创 Linux内核定时器使用
内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于内核源码 linux/timer.h 和 kernel/timer.c 文件中。被调度的函数肯定是异步执行的,它类似于一种“软件中断”,而且是处于非进程的上下文中,所以调度函数必须遵守以下规则:没有 current 指针、不允许访问用户空间。因为没有进程上下文,相关代码和被中断的进程没有任何联系。不能执行休眠(或可能引起休眠的函数)和调度。任何被访问的数据结构都应该针对并发访问进行保护,以
2021-01-07 13:39:51
292
原创 GNU C 与 ANSI C的区别
GNU C 与 ANSI C的区别零长度数组GNU C允许使用零长度数组,定义变长度对象时比较方便struct var_data { int len; char data[0];};var_data的大小仅为一个int型,data是常量地址,data[index]是访问其后的内存空间。可以使用如下方式遍历数据struct var_data data;for(i=0; i<data.len; i++){ printf("%x ", data.data[i]);}cas
2021-01-05 14:09:43
226
原创 2021年自己需要完成的事情
2020年的即将过去,2020年是极其不平凡的一年,这个每个人都知道,到现在为止,我居住的地方还在被化为中风险地区,珍惜生命吧。看到自己的2020的计划,基本上是没有按照路线走,2020做的也太杂,经历了很多人生中的大事,但是自己的能力确实在不知不觉提高了一些。2021年,最重要的就是要换一个工作了,不为别的,只为薪水。下面罗列自己在将来的2021年计划要完成的事情。1、QT图形化编程的深入,在学习QT的同时,也学习了C++,否则单纯地学习C++是一个很枯燥的过程,在这一年内,至少做6-10个基于QT
2020-12-30 09:14:45
607
原创 vim配置文件之.vimrc
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 通用设置"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""let mapleader = "," " 定义<leader>键set nocompatible " 设置不兼容原始vi模式filetype on .
2020-12-29 22:22:51
239
原创 vim 高级操作总结
ctrl + z ===> 将vim放到后台fg ===> 将vim放到前台b/B ===>往回退一个字{ ===>移动到上一个段落 } ===>移动到下一个段落0 ====>移动到行首$ ====>移动到行尾:set hlsearch ====>设置搜索高亮效果* ====>搜索目前游标的这个字fx ==
2020-12-28 17:44:07
139
原创 WSL使用NFS
微软的WLS下挂NFS系统是失败的,因为内核不支持,此路是不通的,至少目前我是没有找到解决办法,可以使用hane winNFS替代。
2020-12-14 16:17:32
1808
原创 STM32介绍
我购买的开发板照片什么是STM32从字面意义来看:ST:意法半导体,是一个公司的名字。M:Microelectronics的缩写,表示微控制器32:32bit的意思,表示这是一个32bit的微控制器开发板使用的是STM32F103ZET6芯片,内部资源如下(1)内核:32位 高性能ARM Cortex-M3处理器。时钟:高达72M,实际还可以超频一点。单周期乘法和硬件除法。(2)IO口:STM32F103ZET6: 144引脚 112个IO,大部分IO口都耐5V(模拟通道除外)
2020-12-02 15:25:04
3705
原创 STM32中USART串口通信实验
声明:所有资源均来自于普中STM32F103开发板相关资料,这是自己购买的一款开发板,如果原作者认为侵权,请联系我以便及时处理。STM32F1的USART介绍USART即通用同步异步收发器,它能够灵活地与外部设备进行全双工数据交换,满足外部设备对工业标准 NRZ 异步串行数据格式的要求。UART即通用异步收发器,它是在USART基础上裁剪掉了同步通信功能,同步和异步主要看其时钟是否需要对外提供,这个前面也介绍了。我们开发板上使用的STM32F103ZET6芯片含有3个USART,2个UART外设
2020-12-02 14:37:18
5151
原创 STM32中printf重定向
声明:所有资源均来自于普中STM32F103开发板相关资料,这是自己购买的一款开发板,如果原作者认为侵权,请联系我以便及时处理。printf重定向简介C语言中printf函数默认输出设备是显示器,如果要实现在串口或者LCD上显示,必须重定义标准库函数里调用的与输出设备相关的函数。比如使用printf输出到串口,需要将fputc里面的输出指向串口,这一过程就叫重定向。那么如何让STM32使用printf函数呢?int fputc(int ch,FILE *p) //函数默认的,在使用print
2020-12-02 11:00:06
5115
3
原创 STM32独立看门狗实验
声明:所有资源均来自于普中STM32F103开发板相关资料,这是自己购买的一款开发板,如果原作者认为侵权,请联系我以便及时处理。IWDG介绍STM32F1芯片内部含有两个看门狗外设,一个是独立看门狗IWDG,另一个是窗口看门狗WWDG。两个看门狗外设(独立和窗口)均可用于检测并解决由软件错误导致的故障。独立看门狗简单理解其是就是一个12位递减计数器,当计数器从某一个值递减到0时(如果看门狗已激活),系统就会产生一次复位。如果在计数器递减到0之前刷新了计数器值,那么系统就不会产生复位。这个刷新计
2020-12-02 10:13:46
1354
原创 keil5中输入中文注释乱码解决
打开Edit------->Configuration在弹出的对话框中选择Editor—>Encoding-----> Chinese GB2312(Simplified)再次编辑,发现输入中文正常了。
2020-12-02 10:00:27
17681
1
原创 shell实现的俄罗斯方块游戏
该脚本测试可以运行起来,但是实际使用发现功能不太正常。主要可以学习一下里面的一些语法。#!/bin/bash# Tetris Game# 10.21.2003 xhchen<[email]xhchen@winbond.com.tw[/email]>#APP declarationAPP_NAME="${0##*[\\/]}" #print exec nameAPP_VERSION="1.0"#颜色定义cRed=1cGreen=2 cYellow=3 cBlue=4
2020-11-04 15:59:56
127
原创 海思交叉编译工具链安装脚本
该脚本在海思arm-hisiv500-linux.sh文件中,内容如下,可以作为以后自己的shell脚本的参考#!/bin/bashTOP_DIR=/opt/hisi-linux/x86-arm#TOP_DIR=/home/share/toolchains/installTOOL_DIR=$TOP_DIR/arm-hisiv500-linuxTAR_BIN_DIR=$TOOL_DIR/target/binBIN_FILES=$TOOL_DIR/bin/arm-hisiv500-linux-uc
2020-10-28 16:28:14
522
原创 C中计算某段代码运行时间框架
struct timeval start, end; gettimeofday(&start, NULL); /** to calculate code */gettimeofday(&end, NULL); long long total_time = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec); // get the run time by microsecondp
2020-10-28 15:55:21
124
原创 telnet下使用shell交互式登录
#!/bin/bashhi_login(){ /usr/bin/expect<<-EOF spawn telnet 192.168.0.160 24 expect { "(none) login:" { send "root\n" } } expect eof EOF}hi_login
2020-10-28 15:47:42
946
原创 海思平台freetype矢量字体库的交叉编译
下载源码,并将其解压tar vxf freetype-2.4.10.tar.bz2进入到解压目录,进行交叉编译和平台配置cd freetype-2.4.10/./configure --host=arm-linux CC=arm-hisiv500-linux-gcc --prefix=/home/ubuntu/temp/__INSTALL_freetype_ARM编译并安装make && make install将编译的库文件放置海思交叉编译环境下的库路径下 s
2020-10-28 09:33:34
484
原创 awk基础
文本处理工具 awk命令格式awk [options] -f awk-script-line filename options: -F:定义输入字段分隔符,默认的分隔符是空格或者制表符(tab) command: BEGIN{} {} END{} 行处理前 行处理 行处理后awk 'BEGIN{print 1+1} {print "demo"} END{print "end....."}' passwd
2020-10-15 16:32:00
73
原创 chattr 设置重要的文件不可以删除
sudo chattr +i a.c rm a.c # fail sudo rm -rf a.c # fail sudo chattr -i a.c rm a.c # ok
2020-10-15 11:15:53
251
原创 Linux下操作小技巧
vim打开文件,替换文件中的内容将IP地址114.114.114.114替换为114.114.114.200\1为一个占位,等价于前面小括号中的内容:%s/\(114.114.114.\)114/\1200/
2020-10-13 09:14:29
155
1
原创 Linux中C验证线程的几种退出方式
/* 验证线程的几种退出方式 */#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <string.h>#include <pthread.h>void* myfunc(void* arg){ printf("child pthre
2020-10-12 10:47:56
528
原创 shell中shift使用
#!/bin/shwhile [ $# -ne 0 ]do let num+=$1 shift 2doneecho "num : ${num}"测试结果
2020-10-12 10:09:23
152
原创 shell函数中数组传递参数
#!/bin/sharray=(1 2 3 4 5)echo "${array[@]}"func_demo(){ value=0# for i in "$@" for i in $* do let value+=$i done echo $value}func_demo ${array[@]} #数组所有元素的值echo "1111111111111"func_demo ${array[*]}测试结果...
2020-10-12 09:51:20
655
原创 shell实现并发检查某个网段IP
#!/bin/sh> ip.txtfor i in {1..255}do { ip=192.168.8.$i ping -c4 -W1 $ip >&/dev/null if [ $? -eq 0 ];then echo "$ip" | tee -a ip.txt fi }&donewaitecho "ok"
2020-10-09 14:34:55
110
原创 shell命令行传递参数
shell命令行传递参数及其校验#!/bin/shif [ $# -eq 0 ];then echo "usage: `basename $0` filename" exit 1fiif [ ! -d $1 ];then echo "error file type" exit 2fifor dir in `ls $1`do echo "$dir"doneshell重新定义分隔符#希望for处理文件按照回车分隔,而不是空格或者tab#重新定义分隔符#IFS内部字段分隔符
2020-10-09 14:33:23
937
原创 shell实现变量的替换
string/old/newunset urlurl=www.github.com.cnecho ${url/github/sina}变量的替代${变量名-新的变量值}如果变量没有被赋值,会使用新的变量值替换;如果变量有被赋值,包括空值,不会被替代。${变量名:-新的变量值}如果变量没有被赋值,包括空值,会使用新的变量值替换;如果变量有被赋值,不会被替代。...
2020-09-30 13:17:06
437
原创 shell中的算术运算使用
exprexpr 1 + 3num1=10num2=20expr $num1 + $num2C语言方式echo $((3 + 4))方括号[ ]echo $[5 + 3]let命令let sum=1+1echo $sum
2020-09-30 09:23:55
91
原创 shell中的死循环示例
#! /bin/bash for (( ; ; )) #死循环do echo "+++" sleep 1 echo "---"done测试结果
2020-09-28 16:47:20
564
原创 shell中的特殊符号使用() ``
显示当前系统/的剩余空间df -h | grep '/$' | awk '{ printf $4 }'()等价于 ``
2020-09-28 09:29:34
2299
原创 C实现itoa函数的的一种方式
#include <stdio.h>#include <string.h>#include <stdlib.h>void my_toupper(char * str){ while(*str != '\0') { if((*str >= 'a') && (*str <= 'z')) *str += 'A' - 'a'; str++; } retur
2020-09-27 16:19:50
154
原创 C实现DNS到IP地址的实现
#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <netdb.h>#include <arpa/inet.h>#include <sys/socket.h>int dns2ip(const char *domain, char * ip, int len){ char **pptr
2020-09-27 13:16:06
196
原创 virtual box 报错VT-x is not available (VERR_VMX_NO_VMX)解决办法
前提是以前用着虚拟机没有问题,突然出现这个问题的解决办法。首先BIOS需要打开VT-x的支持。保存信息VT-x is not available (VERR_VMX_NO_VMX). 返回 代码: E_FAIL (0x80004005) 组件: ConsoleWrap 界面: IConsole {872da645-4a9b-1727-bee2-5585105b9eed}解决1、管理员身份打开cmd2、bcdedit 并回车,找到hypervisorlaunchtype选项发现为auto3、b
2020-09-25 10:22:47
3386
4
原创 sqlite数据库操作
数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合。sqlite数据库:是一种小型的关系型轻量级的嵌入式数据库。支持数据库大小至2TB;足够小,全部源码大致3万行c代码,250KB,比目前流行的大多数数据库对数据的操作要快。1-- 安装数据库: sudo dpkg -i *.deb2-- 创建数据库 sqlite3 stu.db //不存在则创建并打开 存在打开3-- sqlite命令 系统命令 以 "."开头 普通命令 ,
2020-09-25 09:08:17
132
原创 UDP模型流程及其函数
服务器创建套接字 socket( )填充服务器网络信息结构体 sockaddr_in将套接字与服务器网络信息结构体绑定 bind( )进行通信 recvfrom( )/sendto( )客户端创建套接字 socket( )填充服务器网络信息结构体 sockaddr_in进行通信 sendto( )/recvfrom( )函数sendto( )#include <sys/socket.h>ssize_t sendto(int socket, const void *mes
2020-09-24 13:26:58
114
原创 socket网络编程TCP中C/S架构函数框架
服务器端创建套接字 socket( )填充服务器网络信息结构体 sockaddr_in将套接字与服务器网络信息结构体绑定 bind( )将套接字设置为被动监听状态 listen( )阻塞等待客户端的连接请求 accept( )进行通信 recv( )/send( )客户端创建套接字 socket( )填充服务器网络信息结构体 sockaddr_in发送客户端的连接请求 connect( )进行通信 send( )/recv( )socket( ) #include <s
2020-09-24 13:22:20
257
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人