自定义博客皮肤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那些事】,每周分享高质量原创文章!

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

转载 【内核】深入分析内核panic(一)--内核问题的原因

linux内核包括进程管理、内存管理、中断管理、设备驱动、同步机制等各种模块,它们共同运行在一个共享的地址空间中,因此在运行中一旦出现问题,彼此之间可能具有千丝万缕的联系。而且与用户态不同,内核还需要与形形色色的硬件打交道,因此对于某些较为诡异的问题,除了软件以外还可能受到硬件的影响。如由于射线或电磁辐射的原因造成内存中某个bit翻转,或者某些非法总线地址的访问,导致总线挂死等。

2023-04-30 10:37:33 3206

转载 【调试】crash使用方法

crash是redhat的工程师开发的,主要用来离线分析linux内核转存文件,它整合了gdb工具,功能非常强大。可以查看堆栈,dmesg日志,内核数据结构,反汇编等等。crash支持多种工具生成的转存文件格式,如kdump,LKCD,netdump和diskdump,而且还可以分析虚拟机Xen和Kvm上生成的内核转存文件。同时crash还可以调试运行时系统,直接运行crash即可,ubuntu下内核映象存放在。该命令将内核崩溃时所有进程按最后运行时间戳进行排序,最后运行的进程排在最前面。

2023-04-30 10:35:24 6148

原创 【调试】kdump原理及其使用方法

Kdump是在系统崩溃、死锁或死机时用来转储内存运行参数的一个工具和服务,是一种新的crash dump捕获机制,用来捕获(内核崩溃)的时候产生的crash dump。Kdump 使用两个内核:生产内核和捕获内核。生产内核是一个普通内核,它使用特殊的 kdump 特定标志启动。我们需要告诉生产内核保留一些物理内存,用于加载捕获内核。我们需要提前加载捕获内核,因为在崩溃发生的那一刻,由于内核损坏,无法从磁盘读取任何数据。生产内核是捕获内核服务的对像。

2023-04-07 22:48:51 4032

原创 【调试】kprobes(二)使用方法

上一节介绍了kprobe的基本概念,下面我们将使用几个具体的例子,看下kprobe在实际使用中有那些应用场景。ARM32,ARM64,X86寄存器及访问方式。

2023-04-07 22:44:35 3265

原创 如何获取系统下目录的文件系统类型

文件的格式给出当前系统所安装的文件系统信息。同时也能反映出任何手工安装从而在。下面写个程序提取下设备名,挂载目录,文件系统类型等参数。最近看到一个问题,如何获取当前系统的文件类型?文件中没有包含的文件系统。查看挂载文件系统的状态。mounts文件包含6列。

2023-04-07 22:40:12 2899

原创 【调试】kprobes(一)基本概念

开发人员在内核或者模块的调试过程中,往往会需要要知道其中的一些函数有无被调用、何时被调用、执行是否正确以及函数的入参和返回值是什么等等。比较简单的做法是在内核代码对应的函数中添加日志打印信息,但这种方式往往需要重新编译内核或模块,重新启动设备之类的,操作较为复杂甚至可能会破坏原有的代码执行过程。

2023-04-07 22:33:31 3241

原创 【调试】perf和火焰图

perf是linux上的性能分析工具,perf可以对event进行统计得到event的发生次数,或者对event进行采样,得到每次event发生时的相关数据(cpu、进程id、运行栈等),利用这些数据来对程序性能进行分析。perf可以统计或采样的event有很多,如果我们要分析cpu,那么我们可以使用cpu-cyclescpu-clock来衡量占用cpu的程序的分布情况,还可以通过等event来分析造成cpu占用高的底层原因,确定原因后方便优化。

2023-04-07 22:32:32 3083

原创 【调试】ftrace(三)trace-cmd和kernelshark

之前使用ftrace的时候需要一系列的配置,使用起来有点繁琐,这里推荐一个ftrace的一个前端工具,它就是trace-cmd。

2023-04-07 22:26:52 3350

原创 【调试】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 3151 1

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

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

2023-03-03 22:36:20 3676

原创 【调试】netconsole的使用

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

2023-02-23 22:41:18 3668

原创 【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 4090

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

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

2023-02-23 22:21:02 3834

原创 【调试】GDB使用总结

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

2023-02-19 22:20:10 3780 1

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

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

2023-02-19 22:12:29 1199 4

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

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

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

原创 内核转储的设置

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

2023-01-15 22:16:40 2918

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

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

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

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

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

2022-11-26 23:10:53 1522 2

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

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

2022-11-26 23:01:40 3630

原创 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 2925

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

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

2022-11-13 17:45:48 5591

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

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

2022-10-31 22:19:56 2686 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 2105

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

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

2022-10-31 22:13:25 1706

原创 【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 2767

原创 一道C语言改错题

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

2022-10-31 22:10:06 1653

原创 音视频方向读者的秋招总结

2021应届本二,目前年薪20,在某行业头部大厂从事嵌入式多媒体开发(音视频应用方向)。由于没有耀眼的学历,学习的资料和企业实际应用有些偏差,2020年大三时秋招处处碰壁,当时最高只有10k,于是抛开薪资选择了一个自认为不错的方向进行实习。努力终有回报,实习半年,毕业三个月后,拿到了当前行业几乎所有头部公司的offer。其中包括海康、大华、宇视、新华三、紫光、萤石、华晨等等。一开始肯定让你自我介绍开场1、如果学校好就介绍一下自己哪个学校毕业的;学校不好就说自己是xx级毕业生。

2022-09-21 22:17:54 48

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

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

2022-09-21 22:17:14 5258

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

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

2022-09-21 22:15:26 3575

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

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

2022-09-21 22:14:13 6178

原创 secure boot (一)fit image

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

2022-09-21 22:13:08 2278

原创 HR面试常见问题汇总

HR面试常见问题汇总

2022-09-06 22:40:45 2306

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

大家关心的问题都在这里

2022-08-10 18:00:00 2250

原创 深入理解Aarch64内存管理

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

2022-08-08 18:00:00 1523

原创 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 3756

原创 关于 uintptr_t和intptr_t 类型

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

2022-07-03 22:50:51 2487 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 2506

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

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

2022-04-25 22:28:45 1937

原创 利用QEMU+GDB搭建Linux内核调试环境

前言对用户态进程,利用gdb调试代码是很方便的手段。而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试。其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qemu就是一种。qemu是一款完全软件模拟(Binary translation)的虚拟化软件,在虚拟化的实现中性能相对较差。但利用它在测试环境中gdb调试Linux内核代码,是熟悉Linux内核代码的一个好方法。本文实验环境:ubuntu 20.04busybox-1.32.1Linux kerne

2022-04-25 22:15:14 2131

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关注的人

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