Advanced Search
Search Results
62 total results found
嵌入式Linux应用开发
配套IMX6ULL PRO MINI等开发板
2.准备开发环境
2.1 100ASK_IMX6ULL开发板接线与启动 在后面的操作里,都是通过串口与板子进行”交流”。串口是串行接口的简称,是指数据一位一位地顺序传送,其特点是通信线路简单。 在电脑上安装好MobaXterm后,使micro USB数据线,连接电脑和开发板上的6号接口(USB转串口)。 连接串口线和电源线 首先如下图所示将串口线与电脑、板子连接,开发板插上电源。 其中特别需要注意的几点: a) 板子的启动选择拨到正确的启动方式,保证该启动方式里面有系统可以运行; b) 板子如图所...
第十三章 EMMC编程(未完整校对)
第十四章:TF卡编程
第十五章:LCD编程
第一章 嵌入式Linux的学习新路线
嵌入式Linux的组成与教程 1.1.1嵌入式Linux的组成 嵌入式Linux系统,就相当于一套完整的PC软件系统。 很多人喜欢从系统启动流程开始学习:先学习裸机,裸机集合起来就是u-boot,再学习内核移植、驱动开发,接下来学习根文件系统,最后学习APP开发。 学习裸机需要2、3个月,学习u-boot也需要2、3个月,结果工作中u-boot基本不用改,并且u-boot比驱动开发还难! 按这套流程下来,学了后面忘了前面,最惨的是:不能快速上手工作,消耗学习热情! 入门讲究的是快速,入门之后再慢...
Framebuffer应用开发
第一章. Framebuffer应用开发 1.1 LCD Framebuffer操作原理 LCD Framebuffer 就是一块显存,在嵌入式系统中,显存是被包含在内存中。LCD Framebuffer里的若干字节(根据驱动程序对LCD控制器的配置而定)表示LCD屏幕中的一个像素点,一一对应整个LCD屏幕。举个例子,LCD屏幕是800600的分辨率,即LCD屏幕存在480000个像素点,若每个像素点4个字节表示,那么LCD Framebuffer显存大小为4800004=960000字节,即1.92MB。因...
图像处理
2图像处理 前言:所有的图像文件,都是一种二进制格式文件,每一个图像文件,都可以通过解析文件中的每一组二进制数的含义来获得文件中的各种信息,如图像高度,宽度,像素位数等等。只是不同的文件格式所代表的二进制数含义不一样罢了。我们可以通过UltraEdit软件打开图像文件并查看里面的二进制数排列。 2.1 BMP图像处理 2.1.1 BMP文件格式解析 BMP是一种常见的图像格式,BMP文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-informati...
输入系统
3 输入系统 3.1 什么是输入系统? 在了解输入系统之前,先来了解什么是输入设备?常见的输入设备有键盘、鼠标、遥控杆、书写板、触摸屏等等,用户通过这些输入设备与Linux系统进行数据交换,Linux系统为了统一管控和处理这些设备,于是就实现了一套固定的与硬件无关的输入系统框架,供用户空间程序使用,这就是输入系统。 3.2 输入系统应用框架描述 在Linux输入系统中,主要分三层进行管理,分别是input core(输入系统核心层)、drivers(输入系统驱动层)以及event handlers(输入...
进程间通信
4 Linux进程间通信 4.1 初识进程 在日常工作/学习中,读者可能会经常听到如下一些词:“作业”,“任务”,“开了几个线程”,“创建了几个进程”,“多线程”,“多进程”等等。如果系统学习过《操作系统》这门课程,相信大家对这些概念都十分了解。但对很多电子、电气工程专业(或是其他非计算机专业)的同学来说,由于这门课程不是必修课程,我们脑海中可能就不会有这些概念,听到这些概念的时候就会不知所云,不过没有关系,先让我们克服对这些概念的恐惧。比如小时候刚开始学习数学的时候,先从正整数/自然数开始学习,然后逐步接触...
线程编程
5 线程编程 本章将分为两大部分进行讲解,前半部分将引出线程的使用场景及基本概念,通过示例代码来说明一个线程创建到退出到回收的基本流程。后半部分则会通过示例代码来说明如果控制好线程,从临界资源访问与线程的执行顺序控制上引出互斥锁、信号量的概念与使用方法。 5.1 线程的使用 5.1.1 为什么要使用多线程 在编写代码时,是否会遇到以下的场景会感觉到难以下手? 场景一:写程序在拷贝文件时,需要一边去拷贝文件,一边去向用户展示拷贝文件的进度时,传统做法是通过每次拷贝完成结束后去更新变量,再将变量转化为进度显...
开发板资源介绍
开发板资源如图所示:
3.1 IMX6ULL启动方式
3.1 IMX6ULL启动方式 3.1.1 芯片手册讲解 IMX6ULL芯片内部有一个boot ROM,上电后boot ROM上的程序就会运行。它会根据BOOT_MODE[1:0]的值,以及eFUSE或GPIO的值决定后续的启动流程。 注:eFUSE即熔丝,只能烧写一次,一般正式发布产品时烧写最终值;平时调试时通过GPIO来设置开发板的启动方式。 boot ROM上的程序功能强大,可以从USB口或串口下载程序并把它烧写到Flash等设备上,也可以从SD卡或EMMC、Flash等设备上读出程序、运行...
第十一章:GPIO中断
4. LED程序
4.1 硬件知识_LED原理图 当我们学习C语言的时候,我们会写个Hello程序。 那当我们写ARM程序,也该有一个简单的程序引领我们入门,这个程序就是点亮LED。 我们怎样去点亮一个LED呢? 分为三步: ① 看原理图,确定控制LED的引脚; ② 看主芯片的芯片手册,确定如何设置控制这个引脚; ③ 写程序; LED样子有很多种,像插脚的,贴片的。 它们长得完全不一样,因此我们在原理图中将它抽象出来。 点亮LED需要通电源,同时为了保护LED,加个电阻减...
5. LED程序涉及的编程知识
5.1 ARM架构的简单介绍 目前IMX6UL是使用Cortex-A7架构,本小节简单介绍一下Cortex-A7架构的基础知识,比如运行模式、寄存器组等。 参考资料: 文件原名DEN0013D_cortex_a_series_PG.pdf 文档全名ARM® Cortex™-A Series Version: 4.0 Programmer’s Guide.pdf 文档所在目录: 资料光盘 00_UserManual\参考资料\Arm架构参考资料\ARMv7编程手册(DEN0013D_cortex_a_se...
6. Makefile与GCC
6.1 交叉编译器 6.1.1 什么是交叉编译 简单地说,我们在PC机上编译程序时,这些程序是在PC机上运行的。我们想让一个程序在ARM板子上运行,怎么办? ARM板性能越来越强,可以认为ARM板就相当于一台PC,当然可以在ARM板上安装开发工具,比如安装ARM版本的GCC,这样就可以在ARM板上编译程序,在ARM板上直接运行这个程序。 但是,有些ARM板性能弱,或者即使它的性能很强也强不过PC机,所以更多时候我们是在PC机上开发、编译程序,再把这个程序下载到A...
7. 时钟体系
时钟信号是数字时序电路的“脉搏”,电路每接收到一个周期的时钟信号,就做一个相应的动作。因此,在允许的范围内,时钟信号的快慢直接决定着电路性能的好坏。在片上系统(SOC)中,不同的模块通常需要工作在不同的时钟频率。为了满足这些需求,芯片将时钟源信号进行稳定、倍频、分频、分发以及屏蔽(gate)等操作,产生不同频率的时钟信号。这些时钟信号和它们的管理电路构成了芯片的时钟体系,驱动着各种各样的功能模块协同工作。 6.1 IMX6ULL时钟体系介绍 6.1.1 晶体振荡电路 时钟信号不是...
8. UART串口编程
8.1 UART介绍 8.1.1 UART串口简介 UART全称是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)。串口顾名思义数据串行接口,即数据的传输是一位接一位传输,属于一种串行的数据总线,属于异步通讯,同时支持全双工数据传输(全双工数据传输:允许发送数据和接收数据在同一时刻发生) 。 除了UART,另外还有一种叫USART,全称是通用同步/异步串行接收/发送器(Universal Synchronous/Asyn...
9. 重定位
9.1 段的概念 段是程序的组成元素。将整个程序分成一个一个段,并且给每个段起一个名字,然后在链接时就可以用这个名字来指示这些段,使得这些段排布在合适的位置。 程序的段包括 代码段(.text):存放代码指令 只读数据段(.rodata):存放有初始值并且const修饰的全局类变量(全局变量或static修饰的局部变量) 数据段(.data):存放有初始值的全局类变量 零初始化段(.bss):存放没有初始值或初始值为0的全局类变量 注释段(.comment):存放注释 ...
10. 异常与中断
参考资料: ARM® Cortex™-A Series Programmer’s Guide version4.0 ARM® Architecture Reference Manual ARMv7-A and ARMv7-R edition Cortex™-A7 MPCore™Technical Reference Manual Revision: r0p5 ARM® Generic Interrupt Controller Architecture Specification Architecture versi...
11. GPIO中断
1.1 GPIO中断介绍(通用的概念) 假设你现在正在写作业,突然电话响起,你需要停下写作业接电话,挂电话后继续写作业。突然由人按门铃,你需要先去开门,然后继续回来写作业。电话和门铃打断了写作业,能中断写作业的事情有很多,比如身体不舒服,口渴等。被打断后怎么做?身体不舒服就停下写作业休息一会,身体好了继续写作业。口渴就停下写作业喝水,喝完水继续写作业。如果你正在接一个很重要的电话,突然门铃响了,这是会优先处理其中一件事,比如先让按门铃的人等一下,挂电话后再去开门,或者先挂电话,等开门后再打电话过...
12. 定时器编程
参考资料: 芯片手册《Chapter30 : General Purpose Timer (GPT)》。 芯片手册《Chapter24 : Enhanced Periodic Interrupt Timer (EPIT)》。 12.1 GPT定时器介绍 GPT具有32位递增计数器。可以将外部引脚上的事件通过定时器计数器捕获到寄存器中。触发事件可以为上升沿或下降沿。当定时器达到设定的值时,GPT还可以在输出引脚上产生事件,并产生中断。GPT具有12位预分频器,该分频器可以对多个时钟源的时钟进行分...
13. EMMC编程
参考资料 https://linux.codingbelief.com/zh/storage/flash_memory/emmc/ 资料光盘: 00_UserManual\参考资料\EMMC编程\JESD84-B50-1eMMCStandard.pdf 1.1 EMMC介绍 1.1.1 EMMC简介 eMMC (Embedded Multi Media Card)是MMC协会订立的嵌入式存储器标准规格,主要针对手机、数码相机、平板电脑等产品。eMMC主要是为了...
第十二章:定时器编程
第十章:异常与中断
IMX6ULL系列开发书籍
第二章:图像处理
STM32MP1系列开发书籍
RISCV架构
含有东山哪吒STU开发板教程,包含RV32以及RV64等系列指令集相关教程。
GUI开发基础教程
嵌入式Linux应用开发完全手册-第一篇
IMX6ULL裸机开发大全
嵌入式Linux应用开发
LVGL基础教程
LVGL基础教程
100ASK_ STM32MP157-M4 用户开发手册
STM32MP157嵌入式Linux应用开发完全手册
第一章. Framebuffer应用开发
第三章:输入系统
第九章:重定位
第四章:进程间通信
第五章:多线程编程
第一章:板上资源
第二章:准备开发环境
第三章:IMX6ULL启动流程
第四章:LED程序
第五章:LED程序涉及的编程知识
第六章:Makefile与GCC
第七章:时钟体系
第八章:UART串口编程
14. TF卡编程
14.1 背景知识 多媒体存储卡(英语:Multimedia Card),又译MMC卡,是一种快闪记忆卡标准。在1997年由西门子及闪迪共同开发,技术基于东芝的NAND快闪记忆技术,因此较早期基于Intel NOR快闪记忆技术的存储卡(例如CF卡)更细小。MMC卡大小与一张邮票差不多,约24mm x 32mm x 1.5mm。MMC卡原本使用1bit串联接口,但较新的标准则容许同时发送4 bit或8 bits的数据。近年MMC卡技术已差不多完全被SD卡所代替;但由于MMC卡仍可被兼容SD卡的设备所...