![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
腿毛都能控
自然规律,功能与物质的平衡
展开
-
c++申请堆内存
linux平台中new内部是通过malloc实现的,new比malloc多一个调用构造函数malloc只是返回一块荒地给你,而new会给你修好路盖好别墅规划好田地new和malloc的区别int main(void){ // C++中用新关键字new和delete替代了malloc和free int *p = new int(53); // p本身分配在栈上,p指向的是一个int类型的数,占4字节 cout << "p = " << p << ", *p原创 2021-03-30 22:58:31 · 1402 阅读 · 0 评论 -
c++关键字
C++的字符类型charchar字符类型,一般占1字节,表示字符(ASCI或unicode字符)从C++14开始char默认是unsigned还是signed取决于目标平台,如arm默认unsigned,而X64默认是signed,建议如果在意符号最好显式使用unsigned char或signed charchar类型cout输出默认为字符,而int类型cout输出默认为数字1 == sizeof(char) <= sizeof(short) <= sizeo原创 2021-03-30 16:06:57 · 219 阅读 · 0 评论 -
c++基本编程
何为命名空间1. 命名空间namespace,是c++引入的一种解决全局变量和函数名冲突的机制2. c语言没有namespace3. namespace的两个关键点:名称冲突,如何合法访问变量c语言如何解决名称冲突多个c文件,全局变量和函数都添加extern链接属性,因此名称冲突是客观存在的解决办法:1. C文件不要太大,同一个文件由一个人写2. 每个c文件中所有全局变量和函数前都加统一的该.c名字的唯一前缀3. 不需要被除自己以外的文件访问的全局变量和函数都加static4. 但是方原创 2021-03-29 19:51:04 · 379 阅读 · 0 评论 -
ubuntu制作桌面启动文件
touch QC.desktopvi QC.desktop粘贴下面配置[Desktop Entry]Type=ApplicationExec=/opt/Qt5.12.10/Tools/QtCreator/bin/qtcreator %F //文件可执行程序Name=Qt CreatorGenericName=C++ IDE for developing Qt applicationsX-KDE-StartupNotify=trueIcon=/home/cx/Desktop/qc_78.pn原创 2021-03-29 09:49:55 · 487 阅读 · 0 评论 -
c语言从入门到精通
这是内存微观空间这是以55pv210内部SRAM的内存分布为例的空间规划图SVC Stack栈区Signature符号信息,文字常量区,如:常量字符串Global Variable全局变量Exception Vector Table异常向量表RW/ZI region Heap堆区1.首先,程序最开始执行的是汇编启动代码以ARM编程为例ARM汇编采用RISC架构,CPU本身不能直接读取内存,而是需要先将内存中的内容加载入CPU中通用寄存器中才能被原创 2021-03-28 00:07:26 · 2798 阅读 · 0 评论 -
开发板中运行QT应用
问题1:找不到libQtxx解决:部署QT库等文件并导出环境变量问题2:error while loading shared libraries: libstdc++.so.6: cannot ## 标题open shared object file: No such file or directory 解决:C++库在交叉编译工具链中,复制进去即可。 cp /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/thumb2/usr/bin/l原创 2021-03-18 17:37:22 · 567 阅读 · 0 评论 -
qmake警告:No qmlscene installed
项目场景:qtcreator5.12.10问题描述:使用qt5.12.10版本软件加载qt5.6.2生成的qmake,在qt version中添加qmake,报有警告,No qmlscene installed原因分析:高版本的qtcreator无法兼容低版本的qt制作的qmake解决方案:由于官网已经没有5.6到5.8的qt了,所以在百度上找了5.6.2的qtcreator安装,结果没有报错信息,应该为qt版本太高导致的报错,有遇到这个情况的同学可以效仿一下...原创 2021-03-18 17:05:16 · 2742 阅读 · 0 评论 -
ubuntu中QT5.6.2开发环境搭建
./qt-XXX.run一直下一步安装完成原创 2021-03-18 16:57:43 · 215 阅读 · 0 评论 -
QT5.6.2配置和交叉编译
源码下载和解压配置相应的qmake:vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf#cx addedQT_QPA_DEFAULT_PLATFORM = linuxfbQMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a# modifications to g++.confQMAKE_CC = arm-linu原创 2021-03-18 16:51:34 · 409 阅读 · 0 评论 -
制作ext2格式根文件与busybox的移植
动手制作ext2格式的根文件系统dd if=/dev/zero of=rootfs.ext2 bs=1024 count=2048 //count规定根文件大小,尽量设置大一些losetup /dev/loop1 rootfs.ext2mke2fs -m 0 /dev/loop1 2048mount -t ext2 /dev/loop1 ./rootfs/在当前目录下mkdir rootfsumount /dev/loop1losetup -d /dev/loop1//卸载losetu原创 2021-03-18 15:29:20 · 351 阅读 · 0 评论 -
tslib移植
解压:tar -xvf tslib-1.4.tar.gz配置:cd tslib./autogen.shecho "ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache mkdir /opt/tslib./configure --prefix=/opt/tslib --host=arm-linux --cache-file=arm-linux.cache编译和安装:makemake install问题及解决:如果./autogen.s原创 2021-03-18 11:44:28 · 139 阅读 · 0 评论 -
Ubuntu中搭建TFTP服务器
学习目标:Ubuntu中搭建TFTP服务器学习内容:在arm开发中,使用tftp方式下载代码,方便调试学习时间:2021年3月18日搭建方法:在Ubuntu中打开终端,首先输入命令:“sudo apt-get install xinetd” 安装xinetd,安装完成xinetd后,接下来安装tftp和tftpd,输入命令:“sudo apt-get install tftp tftpd”."vi /etc/xinetd.d/tftp"向文件写入如下内容service tftp{原创 2021-03-18 10:59:14 · 167 阅读 · 0 评论 -
c++修改变量方法
指针就是windows里的快捷方式引用符就是linux的符号链接原创 2021-03-09 16:13:31 · 601 阅读 · 0 评论 -
c++初学笔记
C程序可以通过__cplusplus符号是否预定义来判断当前是gcc还是g++编译__cplusplus的值是long int类型的,值表示当前编译程序的C++编译器的版本号。C++文件名的常用后缀:源文件(.cpp .cxx .cc .c .c++),头文件(.hpp .hxx .h)iostream的cout使用(1)cout即标准输出,对应stdout(2)cout定义在std命名空间中,要按三种使用方法来用(3)结合<<符号进行输出,可多节连接(4)cout涉及的头文件有原创 2021-03-07 21:39:23 · 87 阅读 · 0 评论 -
ubuntu创建桌面启动文件
touch QC.desktopvi QC.desktop输入[Desktop Entry]Type=ApplicationExec=/opt/Qt5.12.10/Tools/QtCreator/bin/qtcreator %F //可执行路径Name=Qt CreatorGenericName=C++ IDE for developing Qt applicationsX-KDE-StartupNotify=trueIcon=/home/cx/Desktop/qc_78.png //图原创 2021-03-06 19:44:23 · 283 阅读 · 0 评论 -
C++环境搭建
安装cmake过程出错:Error when bootstrapping CMake: Cannot find a C++ compiler that supports both C++11 and the specified C++ flags.没有装gcc 和 g++apt install g++ubuntu安装opensslsudo apt-get install opensslsudo apt-get install libssl-dev测试(如果你没有创建符号链接,下面的命令要带上具体原创 2021-03-06 11:50:19 · 385 阅读 · 0 评论 -
总线设备驱动模型
原创 2021-01-05 18:11:37 · 91 阅读 · 0 评论 -
驱动模型的底层架构
原创 2021-01-05 18:10:04 · 152 阅读 · 0 评论 -
单链表代码
#include <stdio.h>#include <stdlib.h>#include <string.h>struct node { int data; struct node *pNext;};struct node * create_node(int data){ struct node *p = (struct node *) malloc (sizeof(struct node)); bzero(p,sizeof(struct n原创 2020-10-18 22:41:15 · 81 阅读 · 0 评论 -
命令实现原理
定义结构体类型struct cmd_tbl_sstruct cmd_tbl_s { char *name; /* Command Name */ int maxargs; /* maximum number of arguments */ int repeatable; /* autorepeat allowed? */ /* Implementation function */ int (*cmd)(struct cmd_tbl_s *, int, int, char原创 2020-09-13 23:07:46 · 206 阅读 · 0 评论 -
ssh登录解决方案
安装openssh时发现SSHSecureShellClient使用不了,网上查了一些解决办法,尝试无效应该是版本太低了,报错为协议不支持,所以改用WInSCP,解决了连接不上的问题在ubuntu中先卸载openssh,apt remove --purge openssh-server -y重装opensshapt install openssh-server -y这步操作主要是因为在网上找了很多解决办法,修改了很多地方,复原不了了,直接卸载重装是最快的解决办法安装完后修改vi /etc原创 2020-09-21 22:57:41 · 284 阅读 · 0 评论 -
新版linux上编译老版本的kernel出现kernel/timeconst.h] Error 255
在使用ubuntu20.4编译Linux-2.6.31内核时出现这样的错误可以修改timeconst.pl的内容后正常编译。以下是编译错误提示的内容:Can’t use ‘defined(@array)’ (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373./opt/ARM/mini6410/linux/linux-2.6.38/kernel/Makefile:140: recipe for targ原创 2020-09-11 14:35:36 · 2598 阅读 · 0 评论 -
校园网络下的虚拟机ping通与上网切换
第一步windows的ip右击右下角网络图标打开网络选择以太网更改适配器选项选择以太网右击属性选择internet 协议版本4选择属性 使用下面的IP地址点击确定,windows的ip地址配置完成下面是windows内的ubuntu配置ip地址首先是把虚拟机设置里面的网络适配器选择NAT模式在编辑中选择虚拟网络编辑器点击更改设置选择NAT模式点击NAT设置...原创 2020-09-09 18:48:41 · 485 阅读 · 0 评论 -
虚拟机安装tool
新建虚拟机,自定义配置这一步可以先不选光盘,先配置后面的 因为选择光盘的话 他会根据光盘内容来给你设置版本。有可能识别不成功。是有可能,一般也没问题虚拟机位置可以自定义 名字也可以默认是选这个nat链接上网 会自动分配IP地址这些磁盘类型都是默认就好,会根据系统类型自动推荐的这里大小可以灵活配置,Ubuntu没多大,默认就行,大小无所谓的这个界面只有一个cd/dvd多余的没用另外软驱也没用用多少占多少。后期也可以增加硬盘前面是选择默认语言包这里也是默认安装,有1个点需要勾选上 会自适原创 2020-09-09 11:50:15 · 438 阅读 · 0 评论 -
ubuntu及uboot问题总结
原创 2020-09-03 23:05:38 · 453 阅读 · 0 评论 -
STM32 串口DMA方式接收字符串
手把手配置HAL库串口的dma接收及程序编写(1)首先在cubemx配置uart环境1.首先在RCC中的high speed clock选择晶振 crystal.2.在system core 中选中SYS,在右侧debug中选择serial wire.在connectivity中选中USART1,mode选择asynchronous.参数设置如图所示,我选择默认设置,波特率为115200。这里面的不用管在NVIC Settings中将USART global interrupt 的e原创 2020-08-15 11:12:31 · 4151 阅读 · 5 评论 -
二重指针指向指针数组解析
typedef int (init_fnc_t) (void);//定义函数类型init_fnc_t **init_fnc_ptr; //二重函数指针init_fnc_t *init_sequence[] = { //函数指针数组 cpu_init, /* basic cpu dependent setup */ board_init, /* basic board dependent setup */ interrupt_init, /* set up exceptions原创 2020-08-27 00:42:19 · 510 阅读 · 0 评论 -
定时器解析
时钟源时钟经过预分频器来驱动计数器计数。计数器只能往上计数,当计数达到自动重装载寄存器产生更新事件。清零从头开始计数。(系统时钟/(预分频器+1))= 定时器的最终频率;这里的频率的意思就是1s中记(系统时钟/(预分频器+1))M个数,每记一个数的时间为(预分频器+1)/系统时钟产生中断的时间=((预分频器+1)/系统时钟)*arr;Tout = ((arr+1)*(psc+1))/晶振;...原创 2020-08-03 10:26:37 · 309 阅读 · 0 评论 -
break用法
参考例程 1 -> 用于for循环for(;;){// A for(;;) {// B break; // 只跳出B的for循环 }}参考例程 2 -> 用于switchint i;switch(i){ case 1: b...转载 2020-06-04 22:29:31 · 4081 阅读 · 2 评论 -
uboot
uboot的主要作用是用来启动内核的。计算机系统的主要部件,计算机系统就是有CPU做核心进行运行的系统。CPU+存储器Flash+和内部存储PC机的启动过程:(1)典型的部署:BIOS(内层应用程序)程序部署在PC机主板上,操作系统部署在硬盘上,内存在掉电时无作用,CPU在掉电时不工作。启动过程,上电先执行BIOS程序,BIOS程序负责初始化DDR内存,负责初始化硬盘, 然后从硬盘上将OS镜像读取到DDR中,然后跳转到DDR中去执行OS直到启动,启动后BIOS就无用了uboot就是通用启动代码原创 2020-06-01 13:33:27 · 127 阅读 · 0 评论 -
陀螺仪
原创 2020-05-20 10:17:48 · 282 阅读 · 0 评论 -
带参宏定义
typedef struct{ uint16_t ecd; int16_t speed_rpm; int16_t given_current; uint8_t temperate; int16_t last_ecd;} motor_measure_t;uint8_t rx_data[8];static motor_measure_t motor_chassis[7];get_motor_measure(&motor_chassis[i], rx原创 2020-05-19 11:21:28 · 1554 阅读 · 0 评论 -
C语言笔记3
结构体名字只表示类型;ptr相当于pointer;全局变量定义在函数体外部,普通全局变量对整个工程可见,其他文件可以使用etxtern外部声明后直接使用,其他文件也不能再定义一个与其相同名字的变量了,否则会认为是同一个变量。静态全局变量仅对当前文件可见,其他文件不可访问,其他文件可以定义与其同名的变量,两者互不影响,。在定义不需要与其他文件共享的全局变量时,加上static关键字能够有效地降低程序模块之间的耦合,避免不同文件同名变量的冲突,且不会误使用...原创 2020-05-18 18:30:50 · 107 阅读 · 0 评论 -
指针类型与typedef用法
指针与指针所指向的数据类型完成间接寻址整型指针int a;int *p;p=&a;数组指针int a[5];int (*p)[5];p=&a;函数指针int a(int);int (*p)(int);p=(&)a;这三个的共同点是p都是a的首地址。下面是三组类型,类型对应相同,数据的读出与写入按照相同的类型,可以进行间接访问...原创 2020-05-06 02:24:57 · 738 阅读 · 0 评论 -
指针数组与数组指针
指针数组的实质是一个数组,数组中存储的内容全部都是指针变量数组指针的实质是一个指针,指针指向这个数组int *p[5]是指针数组int(*p)[5]是数组指针辨别方法是符号优先级...原创 2020-05-05 12:36:44 · 132 阅读 · 0 评论 -
c语言笔记2
指针的作用时为了间接访问,间接寻址指针使用三部曲:定义指针变量,关联指针变量,解引用当定义一个指针并且未初始化,为局部变量,地址是随机的(野指针)怎么避免野指针?一:定义时初始化为NULL二:解引用判断是不是NULL三:指针使用完赋值为NULL四:使用之前赋值一个可用空间*表示指针符号*结合前面的类型表示类型,与后面结合解引用我们写的代码是给编码器看的,代码要想达到你想象的结果...原创 2020-05-05 11:40:37 · 161 阅读 · 0 评论 -
C语言笔记1
内存笔记程序运行的目的是结果,过程数据类型的本质含义是所占字节数和解析方法函数名是函数的首地址指针全名是指针变量,普通变量与指针变量没有区别。c语言使用栈来保存局部变量,当退出函数后,栈会空间释放栈的大小有限,不要让栈溢出,这样危害很大堆是内存管理方式,随时申请和释放,申请时需要给定大小特点:容量不限,手工操作数组定义时必须同时给出数组元素个数...原创 2020-05-05 09:50:03 · 177 阅读 · 0 评论 -
c语言指针 a与&a解析
a与&a例如:int *p;int a[5];p=a; //可以p=&a //不可以 指针不兼容 这是为什么a与&a到底有何不同,问题分析p所存地址对应大小为int型(四个字节的空间大小);a做右值代表数组的首元素的首地址,是首元素的首地址,因为也为int型,所占字节数相等,所以compatible。&a做...原创 2020-05-04 10:52:47 · 1083 阅读 · 0 评论