- 博客(69)
- 资源 (1)
- 收藏
- 关注

原创 2020.8.31-CVTE嵌入式应用开发秋招笔试题
20道不定项选择题+2道编程题一、20道不定选项:Linux常用命令考查cvte1 复制到 cvte2 的命令dd if=cvte1 of=cvt2 cat cvte1 > cvte2cat cvte1 | cat cvte2 cp cvte1 cvte2 检查内存状态的方式有哪些 cat /proc/memifnotop free...可显示ls用法提示的是ls -ils --helpwhereis ls man ls协议、接口等相关考查(硬件知识)RS2
2020-09-01 11:00:00
8458
原创 深圳四家公司的面试经验分享
零、背景2020疫情当头——待家9个月的时光,终于从踏出老家(MZ)的第一步结束了。2020-9-14,从老家下午赶到深圳“龙岗区”,一下车就去面试了“深云智汇”。2020-9-15,跑去“宝安区”参加“诺瓦智能” 的线下面试。2020-9-16,来到“南山区”参加“艾森智能” 的线下面试。2020-9-17,跑回“宝安区”参加“如一探索” 的线下面试。结束寻找(迫于时间、精力、金钱的消耗,结束四处面试 : )四天三个区,四场面试,都拿到了offer。权衡比较后,最终选择了“艾森智能”。(想
2020-11-22 21:30:57
1032
原创 在Ubuntu、i.mx6ull开发板下挂载NTFS文件系统
一、写在前面什么是NTFS文件系统呢?引自百科的回答如下NTFS(New Technology File System)是Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式,提供长文件名、数据保护和恢复,能通过目录 和文件许可实现安全性,并支持跨越分区暂且知道这个fs是在window下使用的,但是Linux系统并不支持该格式的fs。那有什么方法支持NTFS呢? 安装NTFS-3G,它的概念如下NTFS-3G is an open
2020-06-04 16:08:08
622
原创 一篇入门Git基本命令(拜读廖雪峰大神Git教程)
一篇入门Git基本命令[拜读廖雪峰大神Git教程]1.Git:分布式版本控制系统2.Git诞生历程3.集中式VS分布式4. Git安装5.创建版本库并添加文件6.修改文件并重新提交7.提交日志与回退版本8.工作区和暂存区9.管理修改10.撤销修改11.删除文件12.远程仓库13.添加远程库14.从远程克隆15 分支管理16 创建并合并分支17 解决冲突:18 分支管理策略19 Bug分支20 Feature分支21 多人协作22 Rebase23 标签管理24 创建一个标签25 操作标签26 使用GitHu
2020-06-01 14:53:13
780
原创 推送电子书项目到GitHub:入门Git后的练手
一、本文目标搞IT的,应该无人不知晓“GitHub”, 因此将项目代码托付给GitHub网站管理再合适不过了。(备注:GitHub只是个网站,而Git才是管理代码的(Git——“分布式版本控制系统”) )将电子书项目推送到Github网站,方便后面电子书项目的更新,也方便大家下载学习交流。为啥不推送“数码相框”那个项目呢?因为这个推送只是作为我Git初学者的练手项目,后面再推送数码相框到GitHub。(如果你懂Git基本操作,但没实战过,那这篇文章很适合你。如果你是个GIt高手,请绕道,给小白留
2020-06-01 14:30:18
654
原创 数码相框实现五:图片的手动播放
数码相框实现五:图片的手动播放一、本文目标二、手动播放页面显示三、实现放大、缩小、连播等功能一、本文目标本文实现数码相框的最后一个功能:图片的手动播放具体操作:浏览模式-->点击某张图片(支持jpg\bmp)-->显示图片(可放大、缩小、连播、图片移动)显示效果如下图:如何实现呢?依然两步走:1)页面显示(包括菜单图标 + 图片) 2)功能实现(放大、缩小、连播等)下面按这两步依次讲解。二、手动播放页面显示对于手动播放页面坐标计算,看下图(备注:菜单图标坐标对称的,很简单
2020-05-28 10:03:07
696
原创 数码相框实现四:实现图片的连播模式
数码相框实现四:实现图片的连播模式一、目标与思路二、源码实现与效果图2.1 整体实现的搭建2.2 获得时间间隔和播放目录2.3 准备下一张图片2.4 递归获得目录下文件名2.5 效果图展示一、目标与思路有了前面浏览页面的显示和功能实现,“连播模式”就可完成了。本文目标:实现图片的连播-->连播模式:如果没有设置,则默认从根目录/递归显示所有的图片(bmp和jpg格式)。 否则,如果设置了播放的“时间间隔” 和 选择的“播放目录”, 就会按设置的时间间隔递归连续显示那个目录下的所有图片。
2020-05-25 21:08:41
814
原创 数码相框实现三:浏览页面显示及功能实现
一、本文内容概述在前文时间间隔设置页面显示基础上,继续完善,实现点击设置页面的“选择目录”图标按钮,显示如下“浏览”页面。然后接着实现浏览页面的四个菜单功能。四个菜单的功能介绍:1.向上:返回上一目录,如果在顶层目录,则返回到“设置页面”2.选择:选中某一目录作为主页面里“连播模式”的播放对象3.上一页:返回上层目录,如果在顶层目录,并不返回4. 下一页:进入下一层目录,如果下一层目录不存在,点击没有反应。补充:显示的目录和文件在根文件系统上。下面,分为两部分讲解: 浏览页面显示 +
2020-05-24 23:17:04
571
原创 数码相框实现二、显示设置页面、时间间隔设置页面
数码相框实现二、显示设置页面、时间间隔设置页面一、写在前面二、本文内容概述三、显示设置页面四、显示时间间隔设置页面五、实现加减时间间隔六、全文总结一、写在前面突然发现,如何先把思路讲清,然后再贴出一堆代码。这种分离式的讲解不仅难以将代码与原理联系在一起,更重要的是后面贴出的一段代码实在枯涩难懂(一没注释,二代码太长)。因此,个人看法,应该一文按实现顺序拆分为几部分,每一部分将思路与代码实现结合起来,且第一部分应提出本文目标,结尾部分再捋一下全篇思路,做出总结。此外,如有参考资料或辅助资料放在最后
2020-05-21 21:19:30
635
原创 数码相框实现一、显示主界面
一、理清思路, 比啥都重要因为数码相框是在电子书的基础上实现的,因此会继续继承电子书的框架。即显示主界面和其它界面合为一个子模块,也需向上注册该模块。对于显示主界面,本文目标如下图:实现显示主界面分三步走1)按电子书子模块实现的老套路,搭建子模块的框架2)显示主界面的逻辑3)获得触摸屏输入事件的逻辑1)主界面显示的子模块框架图,如下这部分代码最好写了,只是添加一个子模块。套路跟之前编写电子书子模块一样。因此,这里不再赘述,重点在下面的如何显示主界面2)显示主界面逻辑图,如下
2020-05-19 23:02:31
921
原创 数码相框的准备——显示并缩放bmp图片
一、写在前面后续的文章将会在电子书的基础上实现一个数码相框。在讲解框架之前,先讲解如何在LCD上显示bmp图片并支持缩放。另外,后面在讲完一个知识点后便贴出源码实现,加深理解。对于在LCD显示bmp位图,分三步:1)解析BMP文件,获得位图数据2)缩放图片3)合并图片二、BMP图片格式解析与源码实现1)理解BMP图片格式2)编程解析BMP的注意点3)源码实现static int CovertOneLine(int iWidth, int iSrcBpp, int iDstBpp
2020-05-18 22:11:28
859
原创 电子书完善三:支持网络打印
电子书完善三:支持网络打印一、添加debug(输出)子模块二、环形缓冲区 + 多线程三、源码实现3.0 debug_manager.h3.1 debug_manager.c3.2 stdout.c3.2 net_print.c四、调试遇到的坑(bug)一、添加debug(输出)子模块二、环形缓冲区 + 多线程debug子模块用到了环形缓冲区 + 多线程,因为前面讲解多线程并没细讲,这里补充说明一些。1.环形缓冲区2. 多线程用 “互斥锁” 实现多线程见互斥访问临界资源(公共资源), 用“条
2020-05-17 16:59:36
941
2
原创 电子书完善二:多种方式(轮询/select/多线程)实现多输入(终端和触摸屏)
一、轮询方式#include <input_manager.h>#include <config.h>#include <string.h> // strcmp/* g_ptInputOprHead 全局链表头指针 */static PT_InputOpr g_ptInputOprHead;int RegisterInputOpr(PT_InputOpr ptInputOpr){ PT_InputOpr ptTmp; if(!g_ptI
2020-05-15 22:20:38
498
原创 电子书完善一:编写通用Makefile
一、写在前面对于前面电子书的Makefile文件,只是简单地列出所有编译所需的目标文件,但是当修改某个头文件时并不会重编译包含该头文件的源文件。另一方面,当存在成千上万个源文件,这样一 一列出xxx.o是不现实的。因此很有必要写出一个更通用的编译体系。二、电子书的源码树./|-- display| |-- disp_manager.c| |-- fb.c| |-- Makefile| `-- test| |-- Makefile| `-- t
2020-05-14 14:40:07
380
原创 电子书——main.c + draw.c(核心)
一、main.c 与 draw.c 介绍二、main.c 与 draw.c源码实现mai'n.c#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <config.h>#include <draw.h>#include <encoding_manager.h>#include <fonts_manager.h>#include
2020-05-12 14:04:54
473
原创 电子书---编码子模块
一、关于window下的一些编码常识对于一个文本文件,可保存为ANSI、UTF-8、UTF-16 LE、UTF-16BE及 带有BOM的UTF-81)先说说啥是BOM?BOM,是Byte Order Mark 的缩写,就是字节序标记。2)UTF-8 的 编码规则在前面文字提到如何解读UTF-8, 这里再回顾并补充一些。UTF-8 是 遵从 unicode 标准的(也就是是说,UTF-8表示的字符编码在unicode编码表中)但是,UTF-8 是变长(1~4字节)编码的,如何实现变长呢?还是
2020-05-11 20:33:54
603
原创 电子书---点阵子模块
一、点阵子模块介绍1) 点阵子模块的文件组成:|--------fonts|--------------fonts_manager.c|--------------ascii_font.c|--------------gbk_font.c|--------------freetype_cont.c|-------include|-------------fonts_manager.h|-------------config.h2) 点阵子模块框架图注解: 点阵子模块与显示子模块,
2020-05-10 15:51:17
453
原创 电子书---显示子模块
电子书---显示子模块一、显示子模块介绍二、显示子模块代码实现一、显示子模块介绍本文要实现display文件夹下的两个文件: fb.c disp_manager.c, 以及include文件夹下的 disp_manager.h、config.h他们之间的关系如下图所示二、显示子模块代码实现config.h#ifndef _CONFIG_H#define _CONFIG_H// #define DBG_PRINTF(...) // 取消打印#define DBG_PRINTF
2020-05-09 13:47:27
485
原创 电子书的框架与实现安排
电子书的框架与实现安排一、写在前面二、电子书的框架三、电子书实现安排一、写在前面原本,本文计划使用 libjpeg 库在LCD显示一张jpg图片,但是突然发现前面两篇博文的储备+前面LCD驱动 已经能够写出一个电子书,即打开不同编码的文件在LCD显示(当然后期可在控制台显示)。这个项目实现不难,但这个项目的框架值得学习,以及从这个项目学会如何规范编码?如何写多级目录的Makefile?源码如何组织?等等这些值得我们学习,因此,下面讲解这个项目总体框架,然后实现这个项目分为几篇博文讲解,即如何实现这
2020-05-08 17:35:58
472
原创 [电子书]项目储备二:用FreeType2绘制矢量字体、多行文字
0 矢量字体 VS 点阵字体点阵字体:每一个字符都用点阵(8x8 / 8x16/ 16x16等)表示,然后用每个点的虚实来表示字符的轮廓矢量字体:矢量字体(Vector font)中每一个字形是通过数学曲线来描述的,它包含了字形边界上的关键点,连线的导数信息等,字体的渲染引擎(如FreeType2)通过读取这些数学矢量,然后进行一定的数学运算来进行渲染。矢量字体主要包括 Type1、 Tr...
2020-05-07 21:56:32
1253
1
原创 [电子书]项目储备一: 字符编码与LCD显示单个字母/汉字
1 字符编码对于字符编码,网上一堆好文章,写得更详细。这里只是提及一些关键点。字符编码的发展历程概括为: ASCII码--> 各国/地区独立编码(如GB2312/GBK、BIG5等)--->统一编码:unicode码 在面对同一字符可有不同编码,或者同一编码值可解码为不同字符,为统一编码,出现了unicode码,值得注意的是,unicode码只是给出了每个字符对应的编码值,...
2020-05-06 14:23:10
900
原创 Part19:LCD驱动程序
1 代码实现/* from pxafb.c */static inline unsigned int chan_to_field(unsigned int chan, struct fb_bitfield *bf){ chan &= 0xffff; chan >>= 16 - bf->length; return chan << bf->of...
2020-05-05 17:45:27
261
原创 Part18: LCD的裸板编程
0 写在前面本应先讲述LCD工作原理的,但为了脑海中有个框架性、目的性,事先讲解整个框架,然后再次基础上不断完善。在完善过程中,遇到需要理解LCD原理时,再补充说明即可。我觉得,下面的框架值得好好学习(这其实也是“输入子系统”的缩影),还有面向对象的编程方式(封装、抽象)讲解顺序:框架的搭建从上到下,框架的实现从下到上 备注:下面的LCD裸板编程基于s3c2440这款开发板,只是硬件有...
2020-05-04 17:42:52
411
原创 Part17: 触摸屏驱动程序(基于输入子系统实现)
1 基本框架头文件:s3c_ts.h#ifndef _S3C_TS_H#define _S3C_TS_H#include <linux/errno.h>#include <linux/kernel.h>#include <linux/module.h>#include <linux/gpio.h>#include <linux/...
2020-05-02 12:46:41
567
原创 Part16-用platform总线实现led点灯
0 platform总线介绍>> 从Linux2.6内核起,引入一套新的驱动管理和注册机制:platform总线。相对于USB、PCI、I2C、SPI等物理总线来说, platform总线是一种虚拟、抽象出来的总线,实际中并不存在这样的总线。 >> platform总线将“设备相关硬件操作”与“驱动程序”分离,因为硬件相关操作差异大,而驱动程序较稳定。这样分离...
2020-05-01 21:04:23
516
原创 Part15: 内核的输入子系统(input-subsystem)【待完善】
0 明确输入子系统组成、目的对于内核的输入子系统,网上一堆文章。但是很少提及到输入子系统的目的何在?此外,输入子系统三大层之间的划分缘由?(网上很多只是介绍是什么,而没提及分层的目的)因此,在讲解之前,先阐明以上两点。1)输入子系统的目的 站在三个角度考虑: 1.1)站在设备驱动程序角度 设备驱动程序的目的很简单,它只想轻松融入进内核贡献它自己对硬件的操作功能,另外,它肯定不想 与...
2020-04-30 21:39:08
319
原创 阶段总结二:Part8-Part14知识梳理、总结
0 回顾起初的目标① 掌握裸机重定位(这有助于后续理解u-boot)② 掌握裸机中断处理流程③ 掌握Linux异常、中断处理体系④ 编写Linux下的按键驱动程序⑤ 掌握Linux中驱动和应用程序的交互方式:查询、中断-唤醒、poll、异步通知下面我以这5点,概括梳理对应的知识点1 知识梳理对于前5个目标,我想以“思维导图”的方式展开,如下图备注:忽略了一些知识点的展开,并概括...
2020-04-28 21:18:31
163
原创 Part14: 按键中断与定时器
Part14: 按键中断与定时器0 明确硬件中断处理1 按键中断处理程序1.0 设置中断入口1.1 CPU使能总中断1.2 中断源初始化1.3 中断控制器初始化1.4 中断处理函数2 定时器实现LED计数2.1 时钟初始化2.2 时钟中断处理函数0 明确硬件中断处理对于s3c2440开发版,查手册可获得如下图上图不方便注释寄存器的用途,在此从中断源–>中断寄存器–>CPU详细说...
2020-04-28 16:15:23
1076
原创 Part13:按键驱动程序的不同实现(查询/中断/poll/异步通知/同步互斥阻塞)
0 写在前面part12文章是对ARM架构下Linux内核的异常(中断)处理体系结果的原理讲述,有了这些基本的认识后,下面根据不同实现方式实现按键驱动程序的编写。主要内容如下:查询——霸占CPU资源中断——说明一点:下面的实现不会贴全部代码,代码可从https://blog.youkuaiyun.com/qq_42800075/article/details/105670841获取1 按键驱动...
2020-04-24 21:38:28
407
原创 Part12:内核异常(中断)处理体系结构(基于2.6.22.6内核)
1 异常处理体系结构异常的处理体系初始化由两个函数完成:trap_init() 和 init_IRQ()因为中断是异常的一种,且不同板子的中断设置不同,因此有个单独的初始化函数init_IRQ()下面先看看trap_init 如何完成“异常”的初始化,并搭建异常整个处理体系。trap_init的主要工作就是复制“异常向量”到0xffff,0000 且复制异常向量的处理函数到0xffff,...
2020-04-23 15:21:29
182
原创 ARM裸机与驱动编程代码集合(在s3c2440实现)
写了两天,将前面部分所有代码自己写了一遍,中途遇到一些bug,我觉得有必要记录下来后面我会继续完善这篇文章,有很多补充待完成…前面11部分的代码截图如下获取的百度网盘链接地址:链接:https://pan.baidu.com/s/1M13-J4Z2AOw5yZLUMDrsaA提取码:7x1f以上所有代码都经过测试,有运行结果图。测试环境:Ubuntu16.04 LTS板子: S...
2020-04-21 23:33:55
340
原创 Part11: 异常与中断
1.ARM的7种模式、2种状态对于异常与中断的概念,不难理解,中断属于异常,但两者都是不可预见的。对于ARM的中断/异常的使用过程,看下图备注:下面的程序就是根据这样的主线编程,这也是这篇文章的核心。OK,那ARM下有哪些模式呢? 如下图所示补充:CPSR:Current program status register 当前程序状态寄存器SPSR:Store program s...
2020-04-19 23:45:15
163
原创 Part10: 代码重定位与位置无关码
1 代码重定位什么是代码重定位呢?来一个例子,对于S3C2440这款开发板,Nor Flash可以直接读,但不能直接写(可通过代码验证,此处忽略)。但是如果要写的话,如何实现?这时候就要用“代码重定位”了。有两个办法,一是重定位需写的数据到SDRAM 二 是重定位整个程序到SDRAM下面依次讲解这两个方法。1.1 重定位需写的数据到SDRAM直接上代码,再解释。如下char ...
2020-04-18 22:52:42
505
原创 Part9:内存控制器与SDRAM硬件编程
Part9: 内存控制器与SDRAM硬件编程1 内存接口的概念2 不同位宽芯片的地址连接3 内存访问时序图4 SDRAM原理及硬件编程1 内存接口的概念以s3c2440为例,看下面该开发板的内存接口图竟然Nor Flash、网卡、SDRAM(内存)、GPIO、UART这些是统一编址,那有没有“独立编址”的呢?答:有的,nand flash就是一个典例,它不参与CPU的统一编址,看下图...
2020-04-17 22:14:52
390
原创 Part8:S3C2440时钟体系结构
1 硬件时钟体系S3C2440的时钟体系很好理解,记住两点:1. 三大部分:CPU 、高速设备、低速设备分别对应内部BUS、AHB BUS(H:高速)、APB BUS (P:外设) 这三条总线的时钟源分别为 FCLK、HCLK、PCLK,最大值依次为:400Mhz、136Mhz、68Mhz 但是,S3C2440使用的是12Mhz的晶振,如何放大的呢? -----> 锁相环PPL,具...
2020-04-16 14:10:20
230
原创 阶段总结一:Part1-Part7知识梳理、总结
阶段总结一:Part1-Part7知识梳理Part 1~7要求掌握的知识/能力第一部分:①②1. 掌握Ubuntu常用操作2. 掌握在ubuntu下开发单片机程序,跟STM32的开发有一个对比第二部分:③④⑤2.1 掌握u-boot的使用(无需了解代码,但是要会编译、烧写u-boot)2.2 掌握Linux内核的配置、编译、烧写2.3 掌握文件系统的结构,会烧写我们构建好的文件系统(不要求会自己编...
2020-04-15 20:29:55
207
原创 Part6: 构建根文件系统(在s3c2440开发板演示)
Part6: 构建根文件系统[在s3c2440开发板演示]0 最小根文件系统最基本组成1 构建最小根文件系统1.1 生成/dev/console和/dev/null1.2 编译busybox1.3 编写/etc/inittab配置文件1.4 复制glib动态库到/lib1.5 用yaffs制作根文件系统的映像文件1.6 烧写及结果2 完善:自动检测并挂载其它文件系统(proc/sysfs) + N...
2020-04-13 21:10:41
514
原创 Part5:u-boot和2.6.22.6内核源码的打补丁、配置与编译(Part4文章请先忽略)
0 学习路线请暂时忽略Part4文章,因为走偏了路线......(若是一节节讲解硬件(SPI/I2C等)编程,无疑枯燥且容易遗忘,因此,计划先从宏观角度俯瞰整个学习体系,看下面路线安排)学习路线安排:1)站在宏观角度理解整个体系(体验) 1)前面的Part1、part2、part3(入门嵌入式Linux必备干粮) 2)Part5:构建根文件系统 + LED、按键驱动编写 (备注:根文...
2020-04-13 14:53:16
296
usb_1.1_2.0_3.0协议完整版.rar
2020-06-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人