- 博客(55)
- 收藏
- 关注
原创 解决 BindingException: Parameter ‘xxx‘ not found. Available parameters are [xxxx, param1, param2]
解决 BindingException: Parameter ‘xxx‘ not found. Available parameters are [xxxx, param1, param2]
2023-03-13 23:13:56
1547
1
原创 Uncaught SyntaxError: Unexpected token <
Uncaught SyntaxError: Unexpected token
2023-03-04 11:30:01
800
原创 串口uart编程——基于imx6ull
1.main.c#include "uart.h"void delay(volatile int d){ while(d--);}int main(void){ char c; uart_init(); while(1) { c = getchar(); putchar(c); putchar(c+1); } return 0;}2.uart.c/* 设置uart的总时钟寄存器:CCM_CSCDR1;地址:20C_4024h;设置的位bit0-
2022-04-30 16:16:29
775
原创 imx6ull用C语言实现按键点灯代码
int main(void){ volatile unsigned int *pRegLed; /* 加上volatile是为了告诉编译器这个寄存器的操作是易变的,编译器不要去优化这个寄存器 */ /* 假设我不加上这个volatile,让pRegLed = tmp,这条语句很有可能会编译器优化掉 */ volatile unsigned int *pRegKey2; /* 使能GPIO5和GPIO4 */ /* 对于imx6ull来说,GPIO5默
2022-04-27 21:31:06
1556
原创 用C/汇编代码实现imx6ull点灯
一、GPIO的操作方法(参考)二、看原理图找到一个led灯,确定引脚(搜索led)如图所示:① 将GPIO5_3设置为输出引脚,输出低电平有压差灯就亮,输出高电平就灭② 将GPIO5_3设置为GPIO模式需要操作的寄存器是SNVS_TAMPER3三、查看imx6ull的芯片手册1.打开CCM (clock controller module) :其中各种子模块中有GPIO模块上图所示:控制每组GPIO是否使能的寄存器(imx6ull默认都是使能的)其中CCGP1[CG15]控制的是
2022-04-26 23:06:01
1419
原创 用Buildroot构建文件系统、u-boot和kernel镜像并介绍如何使用Buildroot构建一个适合100ask_imx6ull系列开发板的嵌入式Linux系统
一、准备工作:确保你的Ubuntu下载安装了软件,比如ssh和nfs服务,确保Ubuntu能够ping通外网二、解压编译BootloaderBootloader介绍:Bootloader是在操作系统运行之前运行的一段代码,用于引导操作系统。通常每个操作系统都有一组专属的引导加载程序。引导加载程序通常可以通过多种方式引导操作系统内核,还有各种命令用于调试或修改内核运行环境。U-Boot是一个开源的主引导加载程序,用于引导设备的操作系统内核,并含有多种命令以便调试系统。它适用于多种计算机体系结构,包括6
2022-03-09 15:14:16
3568
原创 配置交叉编译工具链(imx6ull pro)
一、配置交叉编译的工具链1.获取源码和内核及工具链2.交叉编译工具链的作用:用来在Ubuntu主机上编译应用程序,而这些应用程序是在ARM等其他平台上运行3.要点:设置交叉编译工具主要是设置PATH, ARCH和CROSS_COMPILE三个环境变量4.确定源码和交叉编译工具链的目录,本文假设其目录为/home/book/二、本文一imx6ull pro开发板为例,进行配置环境变量①永久生效vim ~/.bashrc //修改.bashrc文件在.bashrc文件最后加入或修改如下指
2022-03-08 13:51:48
1381
2
原创 imx6ull开发板挂载Ubuntu(NAT)的NFS目录(手机热点)
一、确保电脑和开发板在同一热点下1.Ubuntu使用的是NAT模式下共享主机的ip地址二、设置NAT网络的端口映射1.原因:在NAT网络下,外面的设备无法看到Ubuntu,要想开发板能访问到Ubuntu,需要进行端口映射。2.3.电脑任务栏搜索虚拟网络编辑器,用管理员权限打开三、改Ubuntu的mountd端口vi /etc/services在最后加上两句mountd 9999/tcpmountd 9999/udp重启nfssudo /etc/init.d/nfs-
2022-03-06 11:23:59
913
1
原创 记录Windows11系统出现的一次蓝屏收集错误信息重启的问题
一、新电脑,Windows11,错误信息如下图二、问题原因:Windows11不能很好地兼容注册表中带有非ASCII字符的应用程序三、解决办法:以联想电脑为例,在联想电脑管家中病毒查杀功能全盘检查,发现一个注册表类型的问题,修复即可...
2022-02-16 12:41:37
8070
原创 socket网络编程实现的简易ftp项目
一、config.h#define LLS 1#define LS 2#define LCD 3#define CD 4#define PUT 5#define GET 6#define QUIT 7#define PWD 8struct Msg{ char data[128]; char Buf[1024];};二、服务器端demo:#include <stdio.h>
2021-11-21 09:15:43
263
原创 socket网络编程实现双方聊天功能
一、服务端demo#include <stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>#include <stdlib.h>#include <string.h>#include <unistd.h>
2021-11-19 17:25:25
944
原创 字节序和字节序转换函数
一、字节序: 字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序。1. 小端字节序(Little endian):将低序字节储存在起始地址。2. 大端字节序(Big endian):将高序字节储存在起始地址。网络字节序 = 大端字节序。字节序转换函数:为了进行转换 bsd socket提供了转换的函数 有下面四个htons 把unsigned short类型从主机序转换到网络序htonl 把unsigned long类型从主机序转换到网络序ntohs 把unsigned s
2021-11-14 09:56:33
2629
原创 TCP/UDP对比
TCP/UDP对比1. TCP面向连接(如打电话要先拨号建立连接) ;UDP是无连接的,即发送数据之前不需要建立连接2. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付3. TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)4. 每一条TCP连接只能是点到点的;UDP支持一对
2021-11-14 09:47:47
1732
原创 exec族函数配合fork函数使用demo
一、实现功能:当父进程检测到输入为1时,创建子进程把配置文件中的指定值修改① 被修改配置文件SPEED=3LENG=9SCORE=9LEVEL=5② 实现修改操作的代码#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>#inc
2021-10-28 17:53:18
210
原创 父子进程退出的情况
一、正常退出1. main函数调用return2. 进程调用exit(),标准C库3. 进程调用_exit()或者_Exit(),属于系统调用补充:1. 进程最后一个线程返回2. 最后一个线程调用pthread_exit二、异常退出1. 调用abort2. 当进程收到某些信号时,如ctrl+c3. 最后一个线程对取消(cancellation)请求做出响应三、 不管进程如何终止,最后都会执行内核中的同一段代码。这段代码为相应进程关闭所有打开描述符,释放它所使用的存储器。对上述任意一种
2021-10-28 16:26:50
1224
原创 wait和waitpid函数和使用
一、wait函数1.函数功能:① 阻塞父进程,等待子进程退出② 回收子进程残留资源③ 获取子进程退出状态(原因)存放在参数中2.函数包含头文件: #include <sys/types.h> #include <sys/wait.h>3.函数原型: pid_t wait(int *wstatus);4.函数参数:① wstatus——一个整型数指针· 当wstatus为NULL时:不关心子进程退出的状态· 当wstatus不为NULL时:子进程退出状态
2021-10-28 16:25:13
2418
原创 vfork函数也可以创建进程,与fork有什么区别
vfork函数与fork函数的区别① vfork直接使用父进程存储空间,不拷贝② vfork保证子进程先运行,当子进程调用 exec(进程替换)或者exit退出后,父进程才执行,在这之前父子进程共享存储空间
2021-10-27 13:14:48
147
原创 fork创建一个子进程的一般目的
1. 一个父进程希望赋值自己,使父、子进程同时执行不同的代码段。这在网络服务进程中是常见的,----父进程等待客户端的服务请求,当这种请求到达时,父进程调用fork,使子进程处理此请求。父进程则继续等待下一个服务请求到达2. 一个进程要执行一个不同的程序。这对shell是常见的情况。在这种情况下,子进程从fork返回后立即调用exec。...
2021-10-27 08:54:35
160
原创 进程创建发生了什么事(全拷贝和写时拷贝)
1.原先linux的设计是全拷贝全拷贝就是说:数据段(已经初始化的data段的数据)、堆、栈、打开的文件、IO流等等的拷贝2.新的linux的设计是写时拷贝写时拷贝(copy on write):如果代码中一个变量的值不发生改变的话就父子进程共享这个变量,只有在子进程对这个变量进行改变时才会在子进程的地址空间里面去拷贝一份变量3.demo#include <sys/types.h>#include <unistd.h>#include <stdio.h>
2021-10-27 08:23:57
172
原创 fork函数创建一个进程
一、fork函数1.函数包含头文件: #include <sys/types.h> #include <unistd.h>2.函数原型: pid_t fork(void);3.函数返回值:成功:① 返回0,代表当前是子进程② 返回非负数,代表当前是父进程失败:返回 -14.demo:#include <sys/types.h>#include <unistd.h>#include <stdio.h>int mai
2021-10-26 20:42:26
245
原创 fopen函数和fwrite、fread、fseek函数的配套使用
一、fopen函数1.包含头文件: #include <stdio.h>// ANSIC标准中的C语言库函数2.函数原型: FILE *fopen(const char *pathname, const char *mode);3.函数参数:① pathname——path为包含了路径的文件名② mode——文件的打开方式4.mode方式补充:5.函数返回值:① 成功:返回指向该流的文件指针② 失败:返回NULL,错误代码存在errno 中二、fwrite函数1.
2021-10-25 22:43:55
1511
原创 修改配置文件的方法之strstr函数
1.待修改配置文件:SPEED=3LENG=5SCORE=9LEVEL=5 2.执行修改demo:#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <string.h>#include <stdlib.h>int main(int
2021-10-24 14:40:35
104
原创 linux中打开/创建文件->读取文件/写入文件->关闭文件过程
1. 在linux中要操作一个文件,一般是先打开一个文件,得到文件描述符,然后对文件进行读写操作(或其他操作),最后是close文件即可2. 强调一点:我们对文件进行操作时一定要先打开文件,打开成功之后才能操作,如果打开失败,就不用进行后边的操作了,最后读写完成之后,一定要关闭文件,否则会造成文件损坏3. 文件平时是存放在块设备中的文件系统文件中的,我们把这种文件叫静态文件,当我们去open打开一个文件时,linux内核做的操作包括:内核在进程中建立一个打开文件的数据结构,记录下我们打开的这个文件:内核
2021-10-23 21:00:05
1220
原创 linux文件之文件描述符
1. 对于内核而言,所有打开文件都由文件描述符引用。文件描述符是一个非负整数。当打开一个现存文件或者创建一个新文件时,内核向进程返回一个文件描述符。当读写一个文件时,用open和creat返回的文件描述符标识该文件,将其作为参数传递给read和write按照惯例,UNIX shell使用文件描述符0与进程的标准输入相结合,文件描述符1与标准输出相结合,文件描述符2与标准错误输出相结合。STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO这几个宏代替了0、1、2这几个魔数(魔数这
2021-10-23 20:24:36
143
原创 Linux文件学习之read函数和读出操作
一、read函数:1.函数包含头文件:#include <unistd.h>2.函数原型:ssize_t read(int fd, void *buf, size_t count);3.函数参数:① fd——文件描述符② buf——一块指定的内存空间③ count——指定的要读取的字节数4.函数返回值:成功返回读取的字节数,出错返回**-1并设置errno**,如果在调read之前已到达文件末尾,则这次read返回0。注意 :对文件操作完之后要及时的close文件,为了
2021-10-22 21:01:24
2148
原创 文件读取位置移动之lseek函数
一、lseek函数:1.函数包含头文件: #include <sys/types.h> #include <unistd.h>2.函数原型: off_t lseek(int fd, off_t offset, int whence);3.函数功能:控制文件的读写位置4.函数参数:① fd:文件描述符② offset:设置完第三个参数后,往后再增加offset 个位移量③ whence:...
2021-10-22 20:59:15
421
原创 Linux文件学习之write函数和写入操作
一、write函数:1.函数包含头文件:#include <unistd.h>2.函数原型:ssize_t write(int fd, const void *buf, size_t count);3.函数参数:① fd——文件描述符② buf——
2021-10-16 15:13:55
3603
原创 Linux文件之open函数打开/创建
一、open函数:1.函数包含头文件: #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>2.函数原型: int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);3.函数参数:① pathna
2021-10-16 10:10:28
2149
原创 rand函数生成随机数
一、函数头文件:#include <stdlib.h>二、函数功能:产生指定范围内的随机数三、函数参数:无四、函数使用:#include <stdio.h>#include <stdlib.h>int main(int argc,char *argv[]){ int a; a = rand()%20;//生成}...
2021-10-15 19:30:53
2018
原创 C语言小游戏之贪吃蛇简易版
#include <stdio.h>#include <curses.h>#include <stdlib.h>#include <unistd.h>#include <pthread.h>#define UP 1#define DOWN -1#define LEFT 2#define RIGHT -2struct Snake{ int hang; int lie; struct Snake *next;
2021-10-15 12:11:37
1220
原创 初见Ncurses
一、ncurses基本函数的使用:①ubuntu总ncurses库的安装:sudo apt-get install libncurses5-dev②查看curses.h头文件中的关于上下左右功能键的键值vi /usr/include/curses.h③编写一个基本的test程序#include <stdio.h>#include <curses.h>int main(int argc,char *argv[]){ int key;
2021-10-12 10:38:50
220
原创 linux中的一些特殊指令(例如ctrl+s)
一、问题发现: 习惯了一段时间的eclipse开发后的我,回到linux下编写代码也会习惯性的按下ctrl+s来保存代码,但是此时整个终端页面却不再响应二、解决办法: 实际上linux下的ctrl+s快捷键的作用是暂停此终端,想要打破暂停也很简单,只需要按下ctrl+q即可...
2021-09-24 14:50:24
367
原创 安卓线程刷新控件遇到的问题
一、想要实现的效果:按下按键之后从0到9依次刷新出现在屏幕上二、实现代码准备:<TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="textfunc" android:text="hello" /> &l
2021-09-18 12:43:25
176
原创 socket客户端代码与安卓app结合遇到的问题和解决方法
一、问题代码:<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="sendMessage" android:text="发送" />public class MainActivity extends Activity { @Override protected voi
2021-09-16 10:22:23
226
原创 安卓学习之eclipse关联夜神模拟器
一、启动模拟器打开电脑cmd输入adb指令查看adb环境是否配置好,下图为未配置好的显示二、配置环境变量:找到eclipse的安装路径,并找到sdk中的platform-tools中的adb.exe,打开它并复制其路径右键我的电脑打开属性,打开高级选项中的环境变量,找到path选项,点击编辑,新建,粘贴我们刚刚复制的adb.exe的路径,点击完成,到这里我们的环境变量的配置就完成了。最后重启cmd...
2021-09-03 12:49:36
525
原创 树莓派实现继电器控制电磁锁
一、使用工具:=====树莓派3b、继电器、电磁锁、导线若干二、接线:三、实现代码(树莓派):#include <stdio.h>#include <string.h>#include <wiringPi.h>#include <wiringSerial.h>#include <unistd.h>int initwiringPiSetup() if (ret == -1){ pr
2021-06-29 10:54:52
2375
3
原创 strtok函数的使用和注意事项(分割字符串)
一、函数头文件 :#include <string.h>二、函数原型 :char *strtok(char *str, const char *delim);三、函数使用实例 :#include <stdio.h>#include <string.h>int main(){ char str[128] = "I'm realy good-looking"; char *p; p = strtok(s
2021-06-05 17:40:11
206
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人