- 博客(181)
- 资源 (13)
- 收藏
- 关注
转载 C语言面试题
1 预处理问题1:什么是预编译?何时需要预编译?答:预编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作。主要处理#开头的指令。如拷贝#include包含的文件代码、替换#define定义的宏、条件编译#if等。.何时需要预编译:1、总是使用不经常改动的大型代码体。2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,...
2018-08-01 20:23:19 55257 6
原创 I.MX6UL系统移植(一)—— U-Boot
1、U-Boot简介 uboot的全称是Universal Boot Loader,uboot是一个遵循GPL协议的开源软件,uboot是一个裸机代码,可以看作是一个裸机综合例程。现在的uboot已经指出液晶屏、网络、 USB等高级功能。2、U-Boot编译 ①、make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean ②、make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- ...
2020-07-25 11:39:11 1587
原创 I.MX6UL裸机开发(十二)—— SNVS
1、SNVS简介(1)SNVS全称是Secure Non-Volatile Storage,直译过来就是安全的非易性存储。SNVS里面主要是一个低功耗的外设,包括一个安全的实时计数器(RTC)、一个单调计数器 (monotonic counter)和一些通用的寄存器。(2)SNVS分为两个子模块:高功耗域(SNVS_HP)和低功耗域(SNVS_LP),这两个域的电源来源如下: ①、SNVS_LP:专用的always-powered-on电源域,系统主电源和备用电源都可以为其供电。 ...
2020-07-21 08:56:31 5959
原创 I.MX6UL裸机开发(十一)—— RGBLCD
1、LCD简介(1)分辨率 分辨率有720P、1080P、2K、4K等。相同尺寸的LCD屏,分辨率越高,效果越清晰。(2)像素格式 I.MX6U使用RGB8888像素格式,即8bits的Alpha(透明)、8bits的红、8bits的绿和8bits的蓝,总共24bits,4字节组成的像素点。(3)LCD屏幕接口 LCD屏幕有很多种接口,比如在显示器上常见的VGA、HDMI、DP等等。但是I.MX6U-ALPHA开发板不支持这些接口。I.MX6U-ALPHA支持RGB接口的...
2020-07-21 08:56:08 849
原创 I.MX6UL裸机开发(十)—— DDR3
1、何为RAM和ROM?(1)RAM: 随机存储器,可以随时进行读写操作,速度很快,掉电以后数据会丢失。比如内存条、SRAM、SDRAM、DDR等都是RAM。RAM一般用来保存程序数据、中间结果。可以随意对 RAM中任何地址的数据进行读写操作。(2)ROM: 只读存储器(不准确)。RAM和Flash可以将容量做的很大,而且掉电以后数据不会丢失,适合用来存储资料,比如音乐、图片、视频等信息。(3)综上所述: RAM速度快,可以直接和CPU进行通信...
2020-07-20 19:47:14 656
原创 I.MX6UL裸机开发(九)—— 串口
1、UART简介(1)UART通信格式 串口全称叫做串行接口,通常也叫做COM接口,串行接口指的是数据一个一个的顺序传输,通信线路简单。使用两条线即可实现双向通信,一条用于发送,一条用于接收。 串口通信距离远,但是速度相对会低,串口是一种很常用的工业接口。I.MX6U自带的UART外设就是串口的一种,UART全称是Universal Asynchronous Receiver/Transmitter, 也就是异步串行收发器。既然有异步串行收发器,那肯定也有同步串行收发...
2020-07-20 19:46:26 271
原创 I.MX6UL裸机开发(八)—— GPT定时器
1、GPT定时器简介(1)GPT定时器全称为General Purpose Timer,是一个32位向上定时器。GPT定时器也可以跟一个值进行比较,当计数值和这个值相等的话就发生比较事件,产生比较中断。 GPT定时器有一个12位的分频器,可以对GPT定时器的时钟源进行分频,GPT定时器特定如下: ①、一个可选时钟源的32位向上计数器。 ②、两个输入捕获通道,可以设置触发方式。 ③、三个输出比较通道,可以设置输出模式。 ④、可以生成捕获中断、比较中断和溢出中...
2020-07-20 19:45:19 543
原创 I.MX6UL裸机开发(七)—— EPIT定时器
1、EPIT定时器简介(1)EPIT的全称是:Enhanced Periodic Interrupt Timer,直译过来就是增强的周期中断定时器,它主要是完成周期中断定时的。I.MX6U的EPIT定时器只是完成周期性中断定时的, 没有输入捕获、PWM输出等功能。(2)EPIT是一个32位定时器,在处理器几乎不用介入的情况下提供精准的定时中断,软件使能以后EPIT就会开始运行,EPIT定时器有如下特点: ①、时钟源可选的32位向下计数器。 ②、12位的分频值。 ③...
2020-07-20 19:44:23 315
原创 I.MX6UL裸机开发(六)—— 中断系统
1、Cortex-A7内核有8个异常中断: 向量地址 中断类型 中断模式(1)0x00 复位中断(Rest) 特权模式(SVC)(2)0x04 未定义指令中断(Undefined Instruction) 未定义指令中止模式(Undef)(3)0x08 软中断(Software Interrupt,SWI) 特权模式(SVC)(...
2020-07-20 19:43:18 486
原创 I.MX6UL裸机开发(五)—— BSP工程管理
1、在工程目录下创建4个文件夹:(1)bsp:存放驱动文件(2)imx6ul:存放跟芯片有关的文件,比如NXP官方的SDK库文件(3)obj:存放编译生成的.o文件(4)project:存放start.S和main.c文件,也就是应用文件2、BSP工程的Makefile:CROSS_COMPILE ?= arm-linux-gnueabihf- #交叉编译工具TARGET ?= bsp #目标名字CC := $(CROSS_COMPILE)gcc #编
2020-07-20 19:38:45 398
原创 I.MX6UL裸机开发(四)—— 何为链接脚本
SECTION{ . = 0X87800000; //设置定位计数器为0X87800000 .text : //.text是段名,冒号是语法要求,冒号后面的大括号可以填上要链接到.text段里面的所有文件 { start.o //设置链接到开始位置的文件为start.o main.o *(.text) //*是通配符,表示所有输入文件的.text段都放到.text中 } .rodata ALIGN(4) : {*(.rodata*).
2020-07-20 19:35:46 307
原创 I.MX6UL裸机开发(三)—— 代码如何烧写到SD卡中
代码如何烧写到SD卡中?1、将imxdownload拷贝到工程根目录下2、给予imxdownload可执行权限3、确定要烧写的SD卡4、向SD卡烧写bin文件 命令:./imxdownload <.bin file> <SD Card> ./imxdownload led.bin /dev/sdd,执行完命令之后生成load.imx,最终烧写到SD卡的就是load.imx,而不是led.bin,load.imx是在led.bin 的基础上添加了特...
2020-07-20 19:34:08 664
原创 I.MX6UL裸机开发(二)—— 编译代码生成可执行文件
1、arm-linux-gnueabihf-gcc编译文件 命令:arm-linux-gnueabihf-gcc -g -c led.s -o led.o (1)-g选项产生调试信息,GDB能够使用这些调试信息进行代码调试; (2)-c选项编译源文件,但是不链接; (3)-o选项指定编译产生的文件名字2、arm-linux-gnueabihf-ld链接文件 命令:arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.el...
2020-07-20 19:32:32 297
原创 I.MX6UL裸机开发(一) —— 如何将IO作为GPIO使用
1、使能GPIO对应的时钟 CCM(Clock Controller Module)有CCM_CCGR0~CCM_CCGR6这7个寄存器,这7个寄存器控制着I.MX6U的所有外设时钟开关。2、设置寄存器IOMUXC_SW_MUX_CTL_PAD_XX_XX,设置IO的复用功能,使其复用为GPIO功能。 寄存器IOMUXC_SW_MUX_CTL_PAD_XX_XX只用到最低5位,其中bit0~bit3(MUX_MODE)用于设置复用功能。3、设置寄存器IOMUXC_SW_PAD_CTL_P...
2020-07-20 19:29:02 476
原创 Cortex-A7 常用汇编指令
一、处理器内部数据传输指令常用数据传输指令 指令 目的 源 描述 MOV R0 R1 将R1里面的数据复制到R0中。 MRS R0 CPSR 将特殊寄存器CPSR里面的数据复制到R0中。 MSR CPSR R0 将R1里面的数据复制到特殊寄存器CPSR中。 二、存储器访问指令存储器访问指令 指令 描述 LDR Rd, [Rn, #offset] 从存储器Rn+offset的位置
2020-06-08 14:15:18 1166
转载 VS常用快捷键(VA插件)
1、查找和替换:Ctrl+F2、“Ctrl+K,D”:代码格式整理,你将发现“原来世界还是这么美好3、快速插入foreach、try等循环:Tab+ Tab4、回到光标前一位置: Ctrl + -;回到光标下一位置: Ctrl + Shift + -5、查找所有引用: Alt + Shit + F6、字符大小写转换: Ctrl + U将字符变为小...
2020-04-09 11:03:35 831
转载 RadioButton和CheckBox的区别
RadioButton和CheckBox的区别:1、单个RadioButton在选中后,通过点击无法变为未选中 单个CheckBox在选中后,通过点击可以变为未选中2、一组RadioButton,只能同时选中一个 一组CheckBox,能同时选中多个3、RadioButton在大部分UI框架中默认都以圆形表示 CheckBox在大部分UI框架中默认都以矩...
2019-11-08 11:14:28 2612
转载 CRC校验详解(附代码示例)
CRC校验即循环冗余校验(CyclicRedundancyCheck),是基于数据计算一组效验码,用于核对数据传输过程中是否被更改或传输错误。首先看两个概念,后续会用到。模2除法:也叫模2运算,就是结果除以2后取余数。模2除法每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或。在CRC计算中有应用到模2除法。 多项式与二进制:二进制可表示成多项式的形式,比如二进制1101表...
2019-11-08 10:51:31 9887 1
转载 STM32输入输出模式理解
最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多:(1)GPIO_Mode_AIN 模拟输入(2)GPIO_Mode_IN_FLOATING 浮空输入(3)GPIO_Mode_IPD 下拉输入(4)GPIO_Mode_IPU 上拉输入(5)GPIO_Mode_Out_OD 开漏输出(6)GPIO_Mode_Out_PP 推挽输出(7...
2019-09-16 09:12:28 475
原创 STM32L系列与普通STM32F系列的比较
问:tianjiu] 请问STM32L与STM32的固件库相同吗?现在最新版是多少?[答:] 目前的固件库(3.3.0)针对STM32 Value line,Connectivity line; [1900-1-1][问:hangeng] STM32L eneryLite系列采用什么样的内核?它和STM32F-2系列有何不同或优势?[答:expert7] 仍然是cortex-m3,只...
2019-09-14 17:02:56 21602
转载 钩子函数是什么?
什么是钩子函数?先来看一段百科:钩子函数是Windows消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息。钩子的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。emmmm,认认真真读三遍。get关键词,在系统级对所有消息进行过滤,这是什么意思呢?是说钩子函数是在一个事件触发的时候,在系统级捕获到了他,然后做一...
2019-09-07 16:36:30 5417
转载 什么是字节对齐,为什么需要字节对齐
概念 在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然边界(alignment)分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。 为了使CPU能够对变量进行快速的访问,变量的起始地...
2019-09-07 15:01:09 15702 3
转载 Linux创建虚拟块设备并格式化为文件系统
环境 为了方便学习文件系统的原理和原始数据的分析,需要创建虚拟块设备并格式化为ext4文件系统;Linux创建虚拟块设备 losetup命令 -a 显示所有已经使用的回环设备状态 -d 卸除回环设备 -f 寻找第一个未使用的回环设备 -e <加密选项> 启动加密编码[root@rhel6 ~]# losetup -f //查...
2019-09-03 15:30:05 2899
转载 在vim上实现跳转到定义处的方法
首先要安装了ctags,在程序的根目录下运行ctags -R,生成tags文件(当前版本vim自带ctags)。然后在编辑程序时按Ctrl+]就会跳转到当前光标所在东西的定义处,也可以通过 ctrl+鼠标单击实现跳转。若有多个tag,直接输入tags标识,回车进行选择。按Ctrl+o即可跳回。不过,当修改过代码后,需要重新生成tags。...
2019-09-02 11:42:54 451
转载 github上的嵌入式开源代码库
github 上部分开源代码库的地址,主要是嵌入式方向,包含其他的一些算法比如slam等一些知识库的地址,在学习中不断积累,有些好的会继续补充到这里来。项目名称 地址 备注 seeed-studio https://github.com/Seeed-Studio seeed-studio的代码库,矽递科技的产品主要面向物联网IOT领域 AliOS-Things...
2019-08-30 10:54:18 1731
转载 buildroot配置实例
一、网址官网:https://buildroot.org/下载地址:https://buildroot.org/download.html二、使用解压后,执行makemenuconfig1.Target options (目标板配置)Target Architecture:目标架构,这里选择 ARM(little endian),...
2019-08-26 14:54:17 724
转载 QByteArray详解
QByteArray在串口通讯中经常被使用,有一定必要较为全面详细的对QByteArray进行阐述。本文通过以下几个部分加以介绍:1. 初始化2. 访问与赋值3. 添加、删除、插入与替换操作4. 查找与比较5. 数据转换与处理1 初始化2 访问与赋值访问QByteArray主要有4中方式,分别为[]、at()、data[]和constData[]。其中[]和...
2019-08-15 10:45:38 3975
转载 gdb基本命令(非常详细)
gdb基本命令本文介绍使用gdb调试程序的常用命令。主要内容:[简介][举例][其他][简介]=============GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。同时GDB也具有例如ddd这样的图形化的调试端。一般来说,GDB主要完成下...
2019-07-10 13:59:05 32649
原创 音视频开发学习
音视频开发学习:1.《视频编码扫盲篇》2.《软解/硬解/码率》3.《视频编解码器流程概述》4.《视频为什么可以压缩》5.《视频和图像的联系》6.《bitmap 和 YUV》7.《几组颜色空间转换的公式》8.《移位避免浮点运算》9.《常见YUV格式》10.《常见RGB格式》11.《视频和图像到底有什么区别》12.《帧率码率比特率》13.《关于分块的...
2019-07-08 19:03:58 1495
原创 PAL和NTSC有什么区别
一、问题:请问 PAL 和 NTSC 有什么区别吗??PAL 和NTSC 是我的数码相机录像的两种视频输出格式,请问它们有什么区别吗?二、彩电的制式彩电的制式,就是指传送电视所采用的技术标准。目前世界上用于彩色广播电视的彩色电视机制式主要有三大类。(1)NTSC正交平衡条幅制,简称NTSC制。采用这种制式的主要国家有美国、加拿大和日本等。起于美国,特点是成本低,兼容性能好...
2019-07-08 16:47:34 22019
原创 通过gdbserver及arm-linux-gdb远程调试开发板上的程序
一.前言嵌入式Linux系统中,应用开发过程中,很多情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序。采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试。 Gdbserver在目标系统中运行,gdb则在宿主机上运行。目标系统必须包括gdbserver程序,宿主机也必须安装gdb程序。在此我们还不能直接采用...
2019-07-08 10:23:45 571
转载 ubuntu如何实现双屏显示
在ubuntu系统下使用xrandr实现双屏幕显示:一.首先直接运行xrandr命令,查看设备的相关信息:运行之后会显示当前连接设备的屏幕信息,如下图,LVDS和VGA-0,而HDMI屏幕为disconnect,意为没有连接:二.设置双屏幕显示:(1)打开外接显示器,双屏幕显示相同的内容--克隆,(auto为最高分辨率)CODE: xrandr --output...
2019-07-08 09:04:15 3010
转载 Linux下的程序调试方法汇总
搞电子都知道,电路不是焊接出来的,是调试出来的。程序员也一定认同,程序不是写出来的,是调试出来的。那么调试工具就显得尤为重要,linux作为笔者重要的开发平台,在linux中讨论调试工具主要是为那些入门者提供一些帮助。调试工具能让我们能够监测、控制和纠正正在运行的程序。我们在运行一些程序的时候,可能被卡住或出现错误,或者运行过程或结果,没能如我们预期,此时,最迫切需要明白究竟发生了什么。为了修复...
2019-07-05 15:22:21 708
转载 SRAM SROM DRAM DROM DDR NAND FLASH EMMC的区别
SRAM SROM DRAM DROM DDR NAND FLASH EMMC的区别RAM(Random Access Memory)的全名为随机存取记忆体,它相当于PC机上的移动存储,用来存储和保存数据的。它在任何时候都可以读写,RAM通常是作为操作系统或其他正在运行程序的临时存储介质(可称作系统内存)。不过,当电源关闭时RAM不能保留数据,如果需要保存数据,就必须把它们写入到一个长期的存...
2019-07-03 15:18:03 6047
原创 Linux命令:ifconfig
ifconfig1.作用ifconfig用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户。2.格式ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<网络设备类型><硬件地址>][io_addr<...
2019-07-02 10:41:35 384
原创 Linux命令:crontab
crontab1.作用Linux crontab是用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类:1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存 2、个人执行的工作:某个用户定期要做的工作,...
2019-07-02 10:09:10 144
原创 Linux命令:kill
kill1.作用kill命令用来中止一个进程。2.格式kill [-s <信息名称或编号>][程序] kill [-l <信息编号>]3.参数-l <信息编号> 若不加<信息编号>选项,则-l参数会列出全部的信息名称。 -s <信息名称或编号> 指定要送出的信息。 [程序] [程序]可以是程序的PID或...
2019-07-02 09:46:45 313
原创 Linux命令:groupadd
groupadd1.作用groupadd命令用于将新组加入系统。2.格式groupadd [-g gid] [-o]] [-r] [-f] groupname3.主要参数-g gid:指定组ID号。-o:允许组ID号,不必惟一。-r:加入组ID号,低于499系统账号。-f:加入已经有的组时,发展程序退出。4.应用实例建立一个新组,并设置组ID加入系统:#g...
2019-07-02 09:25:18 559
原创 Linux命令:useradd
useradd1.作用useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。2.格式useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name3.主要参数-c:加上备注文字,备注文字保存在pas...
2019-06-30 18:20:37 466
原创 Linux命令:lp
lp1.作用lp是打印文件的命令,使用权限是所有用户。2.格式lp [-c][-d][-m][-number][-title][-p]3.主要参数-c:先拷贝文件再打印。-d:打印队列文件。-m:打印结束后发送电子邮件到用户。-number:打印份数。-title:打印标题。-p:设定打印的优先级别,最高为100。4.应用实例(1)使用lp命令打印多个文...
2019-06-30 18:01:34 3071
Linux命令查询工具(最新修改).rar
2019-05-31
Linux单机掷骰子
2018-10-28
2015年数据结构联考复习指导(PDF)
2017-11-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人