自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

嵌入式与Linux那些事的博客

个人公众号【嵌入式与Linux那些事】,每周分享高质量原创文章!

  • 博客(241)
  • 资源 (17)
  • 问答 (1)
  • 收藏
  • 关注

原创 嵌入式软件工程师笔试面试指南目录

嵌入式软件笔试,嵌入式软件面试,程序员简历书写,Linux驱动工程师笔试,Linux驱动工程师面试,BSP工程师笔试,BSP工程师面试,应届生秋招,应届生春招,C/C++笔试题目,C/C++面试题目,C/C++程序员,BSP工程师

2021-06-09 22:37:51 8060 3

原创 【技术交流群内容分享】

榜上有名希望有一天,你也能获得心仪的offer!真心为这些同学感到开心~20210430扫码加我微信备注【交流群】,拉你进群,无备注,不通过。干货分享20210430扫码加我微信备注【交流群】,拉你进群,无备注,不通过。...

2021-05-01 17:18:04 1466 4

原创 嵌入式软件工程师笔试面试指南-ARM体系与架构

嵌入式软件笔试,嵌入式软件面试,程序员简历书写,Linux驱动工程师笔试,Linux驱动工程师面试,BSP工程师笔试,BSP工程师面试,应届生秋招,应届生春招,C/C++笔试题目,C/C++面试题目,C/C++程序员,BSP工程师

2021-04-28 15:22:06 8106 15

原创 嵌入式软件工程师笔试面试指南-C/C++

嵌入式软件笔试,嵌入式软件面试,程序员简历书写,Linux驱动工程师笔试,Linux驱动工程师面试,BSP工程师笔试,BSP工程师面试,应届生秋招,应届生春招,C/C++笔试题目,C/C++面试题目,C/C++程序员,BSP工程师

2021-04-15 17:45:09 10947 7

原创 9个提高代码运行效率的小技巧你知道几个?

我们写程序的目的就是使它在任何情况下都可以稳定工作。一个运行的很快但是结果错误的程序并没有任何用处。在程序开发和优化的过程中,我们必须考虑代码使用的方式,以及影响它的关键因素。通常,我们必须在程序的简洁性与它的运行速度之间做出权衡。今天我们就来聊一聊如何优化程序的性能。

2021-01-10 17:28:38 2746 3

原创 24张图7000字详解计算机中的高速缓存

什么是缓存  缓存又叫高速缓存,是计算机存储器中的一种,本质上和硬盘是一样的,都是用来存储数据和指令的。它们最大的区别在于读取速度的不同。程序一般是放在内存中的,当CPU执行程序的时候,执行完一条指令需要从内存中读取下一条指令,读取内存中的指令要花费100000个时钟周期(缓存读取速度为200个时钟周期,相差500倍),如果每次都从内存中取指令,CPU运行时将花费大量的时间在读取指令上。这显然是一种资源浪费。  如何解决这个问题呢?有人肯定会问,直接把程序存储在缓存中不行吗?   答案是可以的。但是

2020-12-30 22:32:52 3555 14

原创 多图详解缓冲区溢出问题

蠕虫病毒是一种常见的利用Unix系统中的缺点来进行攻击的病毒。缓冲区溢出一个常见的后果是:黑客利用函数调用过程中程序的返回地址,将存放这块地址的指针精准指向计算机中存放攻击代码的位置,造成程序异常中止。为了防止发生严重的后果,计算机会采用栈随机化,利用金丝雀值检查破坏栈,限制代码可执行区域等方法来尽量避免被攻击。虽然,现代计算机已经可以“智能”查错了,但是我们还是要养成良好的编程习惯,尽量避免写出有漏洞的代码,以节省宝贵的时间!

2020-11-18 23:43:21 15392 27

原创 Linux内核中container_of宏的详细解释

上一节[拒绝造轮子!如何移植并使用Linux内核的通用链表(附完整代码实现)](https://blog.csdn.net/qq_16933601/article/details/108542631)我们在分析Linux内核链表的时候注意到内核在求解结构体偏移的时候巧妙的使用了container_of宏定义,今天我们来详细剖析下内核到底是如何求解结构体成员变量的地址的。

2020-09-24 00:27:54 4501 14

原创 拒绝造轮子!如何移植并使用Linux内核的通用链表(附完整代码实现)

在实际的工作中,我们可能会经常使用链表结构来存储数据,特别是嵌入式开发,经常会使用linux内核最经典的双向链表 list_head。本篇文章详细介绍了Linux内核的通用链表是如何实现的,对于经常使用的函数都给出了详细的测试用例,并且移植了Linux内核的链表结构,使得在任意平台都可以方便的调用内核已经写好的函数。建议收藏,以备不时之需!

2020-09-16 00:41:31 3004 27

原创 超详细分析Bootloader(Uboot)到内核的启动流程(万字长文!)

文章目录Bootloader启动流程分析Bootloader第一阶段的功能硬件设备初始化为加载 Bootloader的第二阶段代码准备RAM空间(初始化nandflash)复制 Bootloader的第二阶段代码到SDRAM空间中(重定位)设置好栈跳转到第二阶段代码的C入口点Bootloader第二阶段的功能。初始化本阶段要使用到的硬件设备检测系统内存映射( memory map)将内核映象和根文件系统映象从 Flash上读到SDRAM空间中为内核设置启动参数调用内核uboot启动内核详解uboot与Lin

2020-05-20 22:13:02 28672 48

原创 【调试】ftrace(二)新增跟踪点

我们仿照,添加一个timer_stat的跟踪点,获取start_pid和slack参数。首先,需要在头文件种添加名为timer_stat的跟踪点。/**宏如下structname:表示跟踪点的名字,如上面的timer_stat。proto:表示跟踪点调用的入参的原型,比如timer类型为。args:表示参数。struct:定义跟踪器内部使用的__entry数据结构。assign:把参数复制到__entry数据结构中。print:定义输出的格式。接着在添加。

2023-03-03 22:38:14 191 1

原创 【调试】ftrace(一)基本使用方法

Ftrace是Linux Kernel的官方tracing系统,支持Function trace、静态tracepoint、动态Tracepoint的跟踪,还提供各种Tracer,用于统计最大irq延迟、最大函数调用栈大小、调度事件等。Ftrace还提供了强大的过滤、快照snapshot、实例(instance)等功能,可以灵活配置。内核配置Ftrace后,如果功能不打开,对性能几乎没有影响。

2023-03-03 22:36:20 349

原创 【调试】netconsole的使用

netconsole模块可以让printk信息(输出到控制台的信息)通过网络(UDP)发送到远程主机。与串口控制台不同,netconsole不需要串口线和串口。另外,它可以轻易地将多台服务器的内核信息收集到一台服务器上。当设备上串口无法使用时,使用netconsole将日志信息保存到远程主机更方便、可行。netconsole模块不能用于获取crash dump,也不能进行一般的控制台输入输出。

2023-02-23 22:41:18 333

原创 【ARM架构】armv8 系统安全概述

TrustZone 是ARM 架构的一个安全扩展模型,可以用在任何ARM处理器中。Normal world 通过SMC指令访问Secure world。Secure monitor 管理着Normal World和Secure World 的切换。Secure monitor 的代码在禁用中断的上下文执行。内存系统事务中的NS位表示访问的是Secure World 的内存还是Normal World的内存。

2023-02-23 22:28:03 535

原创 【调试】sysRq按键使用方法

SysRq键是一个魔术案件,只要在内核没有完全卡死的情况下,内核都会相应SysRq 键的输入,使用这些组合键都可以搜集包括系统内存使用、CPU任务处理、进程运行状态等系统运行信息。SysRq 在处理系统挂起时安全重启方面已经比较完善了。

2023-02-23 22:21:02 288

原创 【调试】GDB使用总结

bt fullbt full Nbt full -N用define可以自定义命令,用document可以给自定义的命令加说明,利用help 命令名可以查看定义的命令。define 命令名命令…………enddocument 命令名说明endhelp 命令名以下示例定义了名为li的命令。本文只是对gdb命令脚本做了一个粗浅的介绍,旨在起到抛砖引玉的效果。

2023-02-19 22:20:10 391

原创 一位读者逻辑清晰的提问

但是只是照着别人的教程用内核的驱动或已经写好的驱动,感觉自己不懂原理,面试不知道怎么讲,或者说不知道怎么他们会问什么我怎么回答。还是觉得自己看东西有执念,就想什么都搞懂,看的特别细,一字一句都想搞明白,遇到问题耽误时间,影响自己的计划,就会感到焦虑。比如看数据结构部分,每道题几种解法都看了,担心自己记不住会多次复习,结果搞了一个学期,哦,还有小项目的硬件。我准备寒假年前继续项目,年后看C/C++基础,开学后复习正点pdf,然后看你的Linux驱动部分,然后尽量再准备一个项目,当然刷题要一直进行。

2023-02-19 22:12:29 245 2

原创 使用动态输出打印内核的DEBUG信息

printk()是很多嵌入式开发者喜欢用的调试手段之一,但是,使用printk()每次都要重新编译内核,很不方便。使用动态输出在不需要重新编译内核的情况下,方便的打印出内核的debug信息。要开启动态输出,内核需要添加。开启宏之后,dev_dbg()print_hex_dump_bytes()`所有信息都可以被动态打印出来。

2023-01-15 22:39:59 1202 1

原创 内核转储的设置

当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做 Core Dump(中文有的翻译成“核心转储”)。我们可以认为 core dump 是“内存快照”,但实际上,除了内存信息之外,还有些关键的程序运行状态也会同时 dump 下来,例如寄存器信息(包括程序指针、栈指针等)、内存管理信息、其他处理器和操作系统状态和信息。

2023-01-15 22:16:40 1676

原创 挡不住,逃不过,还是阳了

自从放开后,各路“专家”都给出了不同的建议。最近阳了后,在家也看了不少这类新闻和建议。结合朋友圈大家的各种反应,感触最深的一点是:专家的话不一定对,大家要辩证的看待。比如专家说阳了后不能洗澡。洗澡后身体可能会有不适反应,但如果你能忍受这种不舒服,那当然可以洗。有的年轻人说一天不洗澡要死,那你就洗,但是提醒家里年岁大的人还是不洗,少洗。发烧应该是最大的问题。嗓子吞刀片疼,但不会死人。高烧不退才真正影响身体机能,风险也很大。尤其有基础病的。按说法这波病毒远低于武汉那波。

2023-01-15 22:12:39 4691 4

原创 “寒冬”之下,普通二本学生是如何秋招上岸的

今年的校园招聘可谓异常激烈。互联网那边缩招严重,嵌入式也不好过,“寒气”在每一个行业中传递着。尤其对于没有任何工作经验的校招生来讲,想找一份合适的工作就更难了。在名额不多的情况下,除了比拼学校,论文,竞赛等硬性条件外,更重要的拼的是心态和运气。这位读者在面试到九月的时候,只收到了几家公司的面试,而且,面试结果也不好。心态发生了很大变化,就来找我聊了聊。好在有些话,他确实听了进去,也调整了心态,最后收获了不错的offer。

2022-11-26 23:10:53 610

原创 应届生入职半年被裁员了,我该怎么办?

首先我描述一下我情况,我今年7月进去一家公司嵌入式开发岗位,试用期前三个月我的导师安排给我一些学习任务,相关的公司项目无。三月到了,我也完成了导师给我布置的试用期任务(都是学习知识的任务,加上一些代码考核),基本上都是提前完成,我也去向导师寻求任务,但是导师并没给我,叫我继续学习。我的导师明确跟我说如果我留在原来的部门,现在到年底不会有项目给我做,也不会有文档性工作给我做,因为人员饱和,我当时没有立刻给出答复。最近,一位入职半年的读者咨询我,入职快半年了,组里要把他调到测试岗位,咨询我该怎么办?

2022-11-26 23:01:40 2447

原创 uboot引导应用程序

裸机程序未加链接地址时,只能使用text代码段,如果裸机程序中使用出现了跨端操作(使用text端段以外的段:rodata,data,bss段),必须在链接时手工指定连接链接地址为实际的运行地址。在uboot examples/standalone 目录下,有hello_world.c文件,编译uboot的时候,会自动编译hello_world.bin文件。uboot默认是支持执行应用程序的,就像引导内核一样,我们也可以自己写一个应用程序,让uboot启动时引导。执行go指令去引导我们的程序。

2022-11-26 22:52:59 1871

转载 valgrind基本功能介绍、基础使用方法说明

Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,比如:使用未初始化的内存,使用已经释放了的内存,内存访问越界等。

2022-11-13 17:45:48 1979

原创 一位小镇做题家的付费咨询

2024年毕业,2023年9月开始秋招,你有近一年的时间准备,足够了。至于你说的实习,科研经历,这些都不是决定最后录取你的关键因素。如果你基础扎实,能胜任工作岗位,你说的这些都不太重要。这可能也是大多数在校大学生的状态,忙忙碌碌,浑浑噩噩,不知道该怎么办。缺点是人际关系比较难处理,在事业单位,想要往上升,要特别会处理人际关系。物理不是你喜欢的专业,但是你还能坚持下来,并且还能有不错的结果,那你的个人能力一定没问题!如果想要转ic,建议你去招聘网站看下,对应岗位要求的技能是什么,查漏补缺,坚持学习下去。

2022-10-31 22:19:56 2383 1

原创 如何解读Linux Kernel OOPS信息

在linux内核里面有很多脚本工具,位于linux/scripts/,里面有一个decodecode工具可以用来转换机器码,decodecode脚本可以在没有源代码或符号表的情况下,将oops异常的log作为输入就可以解析出错误位置的汇编代码。LR:子程序的返回地址:从子程序返回后,主程序继续执行的指令的地址称为子程序的返回地址.LR也叫链接寄存器,用于存放子程序的返回地址。PC:PC也叫计数寄存器,用于存放下一条要执行的指令的地址,因此在子程序返回后,要将LR中的地址存入PC,即mov PC LR。

2022-10-31 22:14:36 1475

原创 【RK3399】2.制作ubuntu20.04 roomfs

firefly自带的文件系统,由于缺少一些基本功能模块,因此,我们可以自己手动制作一个ubuntu20.04的文件系统。

2022-10-31 22:13:25 1268

原创 【RK3399】1.RK3399开发板基础配置

最近在小黄鱼入手了一个RK3399的开发板,RK的芯片我也是第一次使用。FireFly配套提供了完善的教程,可以在他们的WIKI上找到。上面有的内容就不在本文叙述了,大家可以参考教程https://wiki.t-firefly.com/zh_CN/Firefly-RK3399/linux_compile_gpt.html这篇文章主要如何对板子做一些基础的配置。

2022-10-31 22:12:25 1657

原创 一道C语言改错题

下午,在上班,读者发来一道题目,问我怎么做。不过,上网查了下,这种用法有时候也可以输出正确的结果,但不建议大家这么用。的效果是一样的,但平常为什么不见printf§这种看起来很简洁的形式呢?支持可变参数,所以后续变量的个数就需要通过str中的格式化串来确定。就会去栈中找这个格式化串对应的变量,但实际上,根本没有向。压入更多的参数,因此就会出现打印失败或者程序崩溃的现象。过了一会,他说查不到,问了群里,大家也不太会。好吧,起码这位读者自己思考过,也问过了。题目如下,找出代码中错误的地方,并改正。

2022-10-31 22:10:06 1360

原创 机械转行嵌入式成功上岸!

我秋招准备不是很充分,但是也收获了比较满意的offer,整个秋招下来我认为最重要的几点如下:1.简历要打磨好,突出自己的优势,我的竞赛比较多,然后我就单独做了个荣誉奖项的模块,项目经历是面试流程中最重要的一环,项目最好要有两个,其中一个必须很熟悉,大概就是项目背景,研发流程,技术的学习方法,有没有团队工作,对项目中的技术要十分了解,一般面试官通过你的简历可能不能透彻掌握你的项目内容,你要有一套完整的说辞将你的这个项目完全表述出来,前期可能借助讲稿,面多了就记住了。

2022-09-21 22:17:14 3451

原创 secure boot(三)secure boot的签名和验签方案

FIT 格式支持存储镜像的hash值,并且在加载镜像时会校验hash值。这可以保护镜像免受破坏,但是,它并不能保护镜像不被替换。而如果对hash值使用私钥签名,在加载镜像时使用公钥验签则可以保护镜像不被替换。因此,公钥必须保存在一个绝对安全的地方。接下来的内容要求大家了解一些密码学的内容,之前也介绍过一些,可以看这篇文章secure boot (一)FIT Imagesecure boot (二)基本概念和框架计算镜像的hash值利用私钥对hash值签名签名结果存在FIT Image 中。

2022-09-21 22:15:26 2257

原创 secure boot (二)基本概念和框架

secure boot是指确保在一个平台上运行的程序的完整性的过程或机制。secure boot会在固件和应用程序之间建立一种信任关系。在启用secure boot功能后,未经签名的固件或程序将不能运行在该设备上。通过这种方式,可以保护操作系统免受恶意攻击。secure boot一般使用公钥/私钥来验证固件和应用程序的签名是否合法。消息摘要又称为数字摘要。它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生。

2022-09-21 22:14:13 4659

原创 secure boot (一)fit image

secure boot 和FIT Image是前段时间接触到的,其实早就该总结下了,奈何懒癌犯了,拖了好久才写出来。之前也有人问我,工作后最大的感受是什么?我的回答是:“快速学习”。就嵌入式来讲,大多数应届生在校期间可能都没做过完整的项目,仅凭在校期间学习的内容很难胜任公司的要求。就底层驱动来讲,虽然我之前也学习过韦东山老师的上s3c2440的课程,但是到了公司才发现,这些内容其实都已经过时了。但并不是说这些内容都没有必要去学习了。在学习的过程中,认为最重要的是培养我们的自学能力。

2022-09-21 22:13:08 1683

原创 HR面试常见问题汇总

HR面试常见问题汇总

2022-09-06 22:40:45 1732

原创 临近秋招了,讲讲大家关心的问题

大家关心的问题都在这里

2022-08-10 18:00:00 1770

原创 深入理解Aarch64内存管理

内存管理描述了如何控制操作性系统对内存的访问。每次操作系统或应用程序访问内存时,硬件都会进行内存管理。内存管理是一种给应用程序动态分配内存区域的方法。处理器是用来运行复杂系统的,比如Linux 支持虚拟内存系统。软件在操作系统上运行只能看到虚拟地址,而处理器负责把虚拟地址转换为物理地址。这些物理地址最终都会被内存系统转换为实际的物理位置。下面对本文内容做个简单总结,以下这些问题是我们要明白的。地址翻译中,statge和level有什么区别?statge 指的是把输入地址转换为输出地址的过程。......

2022-08-08 18:00:00 1135

原创 intptr_t 和 uintptr_t类型使用总结

这两个数据类型是ISO C99定义的,具体代码在linux平台的头文件中。# endif==# endif64# endif为什么会根据不同的位数定义不同的长度呢?先看下不同的数据类型在不同字长机器上长度大小。位数charshortintlong指针161个字节8位2个字节16位2个字节16位4个字节32位2个字节16位321个字节8位2个字节16位4个字节32位4个字节32位4个字节32位64。...

2022-08-08 18:00:00 2271

原创 关于 uintptr_t和intptr_t 类型

最近在看代码时,发现了两个之前没见过的数据类型:,。这两个数据类型是ISO C99定义的,具体代码在linux平台的头文件中。为什么会根据不同的位数定义不同的长度呢?先看下不同的数据类型在不同字长机器上长度大小。指针在32位平台和64位平台下均与 类型的长度一致,然而在16位机器上,为4个字节,而指针为2个字节。因此,就可以发现和定义的巧妙之处:在64位机器上,为,为。而在非64位机器上,为int,为。这样就可以保证和的长度与机器的指针长度一致,因此在进行整数与 指针的相互转换时可以用进行过渡。下面写两个

2022-07-03 22:50:51 1409 1

转载 ARMv8架构u-boot启动流程详细分析(一)

注:本文基于armv8架构来对u-boot进行启动流程分析,u-boot版本为2022-01。首先引用wiki上的简介:u-boot 是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构。u-boot最先是由德国DENX软件中心团队开发,后续众多有志于开放源码bootloader移植工作的嵌入式开发人员将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持了更多的嵌入式操作系统的装载与引导。选择u-boot的理由:开放源码;支持多种嵌入式操作系统内核的引导,如Linux、NetB

2022-07-03 17:35:39 1825

原创 如何在编码阶段减少代码中的bug?

前言作为一名合格的程序员,不写bug是不可能的。如何花费最少的时间来修复bug呢?在编码阶段借助一些静态分析工具往往可以事半功倍,减少代码中的bug。静态分析工具能够在代码未运行的情况下分析源代码,发现代码中的bug。在C/C++程序中,静态分析工具可以发现程序错误,如空指针取消引用、内存泄漏、被零除、整数溢出、越界访问、初始化前使用等。编译器中的静态分析编译器的目标是生成可执行文件,所以,他们并不关注静态代码分析。但是,随着编译器的慢慢完善,在静态分析方面也做得越来越好。比如,当我们编译代码

2022-04-25 22:28:45 1458

2020中兴捧月傅里叶派题目和参考答案.rar

2020中兴捧月傅里叶派题目和参考答案。 二分图的DFS,剪枝优化等。

2020-05-13

SC2440u-boot-2012.04.01_07yaffs.rar

移植环境:ubuntu16.04.交叉编译器:4.3.2.参考了韦东山老师的第二期毕业班视频,S3C2440支持了yaffs2文件系统。

2020-05-04

S3C2440_u-boot-2012.04.01_06DefaultParameter.rar

移植环境:ubuntu16.04.交叉编译器:4.3.2.参考了韦东山老师的第二期毕业班视频3.1节视频,修改s3c2440默认参数,裁剪了uboot。

2020-05-04

S3C2440_u-boot-2012.04.01_05DM9000.rar

移植环境:ubuntu16.04.交叉编译器:4.3.2.参考了韦东山老师的第二期毕业班视频3.1节视频,S3C2440支持了DM9000。

2020-05-04

S3C2440_u-boot-2012.04.01_03Nor_Boot.rar

移植环境:ubuntu16.04.交叉编译器:4.3.2.参考了韦东山老师的第二期毕业班视频,S3C2440支持了NOR启动。

2020-05-04

u-boot-2012.04.01_04Nand_Operation.rar

移植环境:ubuntu16.04.交叉编译器:4.3.2.参考了韦东山老师的第二期毕业班视频,S3C2440支持了NAND操作。

2020-05-04

u-boot-2012.04.01_02Nand_Boot.rar

移植环境:ubuntu16.04.交叉编译器:4.3.2.参考了韦东山老师的第二期毕业班视频,S3C2440支持了NAND启动。

2020-05-04

S3C2440_u-boot-2012.04.01_01New_Board.rar

移植环境:ubuntu16.04.交叉编译器:4.3.2.参考了韦东山老师的第二期毕业班视频3.1节视频,新建了S3C2440的单板文件。

2020-05-04

07th_spi_i2c_adc_mini2440_tq2440_spi_controller_020_007.rar

操作 SPI控制器 开发板是用的是JZ2440

2019-09-26

023_spi_020.rar

spi flash 读写设备ID, 配套JZ2440

2019-09-26

04th_spi_i2c_adc_jz2440_ok_020_005.rar

W25Q16 SPI Flash读写操作。 开发板为JZ2440

2019-09-26

005th_i2c_ok_019_007.rar

实现了I2C控制器的操作,I2C控制器编程_中断部分。实现了使用I2C对EEPROM的写和读

2019-09-17

008_touchscreen_perfect_018_012.rar

ARM裸板 2440 ADC和触摸屏操作源码。来源于韦东山课程代码

2019-09-11

019_nand_flash_016.rar

所用开发板为 JZ2440 。完成的操作有 Nand Flash的初始化,芯片ID的读取,数据的读取,Nand Flash 的擦除和烧写。

2019-08-25

基于C语言的五子棋

基于C语言的五子棋 简易版本 可扩展

2018-02-07

随机移动的小球

随机移动的小球 C语言编写的 有兴趣可以扩展成打砖块

2018-02-07

贪吃蛇C代码

基于C语言的贪吃蛇游戏 无聊做的玩的 直接打开就可以运行 上下左右控制

2018-02-07

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除