自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (3)
  • 收藏
  • 关注

原创 pc-lint plus扫描工具学习总结

前言:由于目前该工具比较新,网上找不到太多的可以参考的资料,这里总结一下简单的用法吧。linux下工具下载地址:[pc-lint puls 1.3.5]下载地址(https://download.csdn.net/download/zj82448191/13129935)一、前期准备1.下载工具,解压后放到linux下。2.官网申请一个三十天的许可证,需要填写邮箱。3.linux下安装python及其相关的依赖模块,可以参考手册在DOC/目录下(1)安装pythonsudo apt-get i

2020-11-20 14:50:40 3292 14

原创 TCP的三次握手与四次挥手理解及面试题

文章目录一、报文分析二、三次握手过程1.引入库二、四次挥手过程三、常见面试题一、报文分析序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字.

2021-05-10 17:03:08 217

原创 GPIO和Pinctrl子系统的使用

文章目录前言一、Pinctrl子系统重要概念1.1 引入1.2 重要概念1.3 示例1.4 代码中怎么引用pinctrl二、 GPIO子系统重要概念2.1 引入2.2 在设备树中指定引脚2.3 在驱动代码中调用GPIO子系统2.4 sysfs中的访问方法三、 在100ASK_IMX6ULL上机实验3.1 确定引脚并生成设备树节点3.2 驱动注册总结前言本章的重点在于“使用”提示:以下是本篇文章正文内容,下面案例可供参考一、Pinctrl子系统重要概念1.1 引入无论是哪种芯片,都有类似下图.

2021-03-24 14:08:16 744

原创 Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化

spi总线与设备驱动系列:Linux SPI总线和设备驱动架构之一:系统概述Linux SPI总线和设备驱动架构之二:SPI通用接口层Linux SPI总线和设备驱动架构之三:SPI控制器驱动文章目录前言一、spi_transfer的队列化二、spi_message的队列化三、队列以及工作线程的初始化四、队列化的工作机制及过程前言我们知道,SPI数据传输可以有两种方式:同步方式和异步方式。所谓同步方式是指数据传输的发起者必须等待本次传输的结束,期间不能做其它事情,用代码来解释就是,调用传输的

2021-03-18 10:16:38 1243

原创 Linux SPI总线和设备驱动架构之三:SPI控制器驱动

spi总线与设备驱动系列:Linux SPI总线和设备驱动架构之一:系统概述Linux SPI总线和设备驱动架构之二:SPI通用接口层文章目录前言一、定义控制器设备二、注册SPI控制器的platform_driver三、注册spi_master四、实现spi_master结构的回调函数总结前言通过第一篇文章,我们已经知道,整个SPI驱动架构可以分为协议驱动、通用接口层和控制器驱动三大部分。其中,控制器驱动负责最底层的数据收发工作,为了完成数据的收发工作,控制器驱动需要完成以下这些功能:申

2021-03-17 17:07:30 457

原创 Linux SPI总线和设备驱动架构之二:SPI通用接口层

spi总线与设备驱动系列:Linux SPI总线和设备驱动架构之一:系统概述文章目录前言一、SPI设备模型的初始化二、涉及的相关结构体2.1 spi_master结构2.2 spi_device结构2.3 spi_driver结构2.4 spi_message和spi_transfer结构前言通过上一篇文章的介绍,我们知道,SPI通用接口层用于把具体SPI设备的协议驱动和SPI控制器驱动联接在一起,通用接口层除了为协议驱动和控制器驱动提供一系列的标准接口API,同时还为这些接口API定义了相.

2021-03-17 14:10:07 815

原创 Linux SPI总线和设备驱动架构之一:系统概述

spi总线与设备驱动系列:文章目录前言一、硬件结构二、工作时序三、 软件架构3.1 SPI控制器驱动程序3.2 SPI通用接口封装层3.3 SPI协议驱动程序3.4 SPI通用设备驱动程序前言SPI是"Serial Peripheral Interface" 的缩写,是一种四线制的同步串行通信接口,用来连接微控制器、传感器、存储设备,SPI设备分为主设备和从设备两种,用于通信和控制的四根线分别是:CS 片选信号SCK 时钟信号MISO 主设备的数据输入、从设备的数据输出脚MOS.

2021-03-17 11:00:43 377

转载 Linux I2C总线(二)I2C设备驱动编写方法

I2C系列之一i2c协议及裸板操作i2c系列之二i2c驱动框架文章目录一、I2C驱动的注册1.设置I2C驱动2.注册I2C驱动二、I2C设备的注册2.1 静态注册2.2 动态注册2.3 在用户空间注册三、 I2C数据传输四、I2C驱动模板一、I2C驱动的注册1.设置I2C驱动static const struct i2c_device_id my_i2c_dev_id[] = { { "my_i2c_dev", 0}, /* 设备名字 */ { }}; static struct

2021-03-15 18:00:48 590

转载 Linux I2C总线(一)I2C驱动框架

文章目录一、几个重要的对象1. I2C总线2. I2C驱动3.I2C设备4.I2C设配器小结二、内核源码分析1.注册I2C驱动2.注册I2C设备3.驱动如何使用设配器给设备发送数据总结一、几个重要的对象1. I2C总线struct bus_type i2c_bus_type = { .name = "i2c", .match = i2c_device_match, .probe = i2c_device_probe, .remove = i2c_device_remove, .sh

2021-03-12 10:19:03 251

原创 设备树学习(五)(中断的使用)

一、dts描述中断下面是一个buttons的中断的描述,描述的规则下图都有介绍,设备树中的中断描述先关的都是硬件相关的二 、驱动程序中获取软件中断号设备树中的buttons节点将会转化为一个platform_device结构体,我们可以使用platform_get_resource()函数来获取软件中断号,然后使用该中断号申请注册一个中断程序。...

2020-11-02 17:50:53 269

原创 input输入子系统

文章目录前言一、输入子系统的作用二、输入子系统框架分析1.输入子系统架构图2.输入子系统分析2.1 核心层分析2.2 事件层分析2.3 input device driver层分析3. input事件分析三、按键驱动实例总结前言本文仅作为学习笔记总结提示:以下是本篇文章正文内容,下面案例可供参考一、输入子系统的作用兼容所有输入设备——Linux系统支持的输入设备繁多,例如键盘、鼠标、触摸屏、手柄或者是一些输入设备像体感输入等等,Linux系统为了管理如此之多的不同类型、不同原理、不同的输入信

2020-10-28 18:28:19 691

原创 设备树学习(四)(uboot对设备树的支持)

一、uboot怎么传入设备树到内核这个比较简单,我们知道在启动内核的时候,需要把设备树的地址写到R2寄存器中,但是怎么写到R2寄存器?a. u-boot中内核启动命令:bootm <uImage_addr> // 无设备树,bootm 0x30007FC0bootm <uImage_addr> <initrd_addr> <dtb_addr> // 有设备树比如 :nand read.jff

2020-10-21 18:07:22 1259

原创 设备树学习(三)(内核对设备树的处理,重要部分)

前言:这篇文章主要分析内核对设备树的处理,即怎么生成了最后的设备节点。**Linux uses DT data for three major purposes:platform identification, 平台识别信息runtime configuration, and 运行时配置信息device population. 设备信息**一、head.S对设备树文件的简单处理bootloader启动内核时,会设置r0,r1,r2三个寄存器,r0一般设置为0;r1一般设置为machine

2020-10-21 16:44:54 619 1

原创 设备树学习(二)(设备树的规范)

前言:本章介绍.dts与.dtb文件规范一、dts文件解析1.1 dts文件布局/dts-v1/;[memory reservations] // 格式为: /memreserve/ <address> <length>;/ { model = "xxx"; compatible = "xxx"; #address-cells = <x>; #size-cells = <x>; [property definitions]

2020-10-20 17:22:54 362

原创 设备树学习(一)( 设备树的引入)

前言:设备树在目前驱动的开发中起着非常重要的作用,需要透彻了解,所以这里写篇文章,用来记录学习过程。1、设备树的引入1.1 字符设备驱动的三种写法(1)传统的写法一开始学习驱动的时候,要写一个LED的驱动程序,一般都会使用最传统的方法来写,即只有一个led_drv.c程序,该程序里面在file_ops结构体中的open函数中,我们会配置LED所对应的引脚为输出引脚,然后会在write函数中对引脚的高低电平做改变,但是这样的话,如果我们还有一个其他的设备,里面也有一个LED灯需要一个驱动程序的话,由于

2020-10-20 09:52:28 599 1

原创 驱动学习之时间管理

一、jiffies1.1概念 通常情况下,jiffies在linux系统启动引导阶段初始化为0,当系统完成了对时钟中断的初始化之后,在每个时钟中断处理例程中,该值都会被+1,因此该值存储了系统自最近一次启动以来的时钟滴答数。除了时钟中断程序对该值有修改的权利,其它任何模块都只有读的权利。这里再介绍一个概念HZ,该值在内核源码根目录下.config文件中。一般为1000,代表系统一秒中发生1000次时钟中断。jiffies在内核源码中作为一个全局性变量被导出,所以在驱动程序中如过想使用,必须包含头文

2020-09-21 14:22:54 186

原创 驱动学习之延时机制(tasklet与工作队列)

前言:最近接触到了工作队列,不知道为什么要用它,大概学习一下一、工作队列的引入我们都知道中断分为顶半部与底半部,顶半部完成的都是比较着急的硬件的操作,完成之后要迅速清除中断,然后由底半部执行那些推后的工作,我们经常使用tasklet...

2020-09-18 18:28:16 969

原创 驱动学习之中断

前言:我们知道外部设备与处理器交互的一般手段有两种–中断与轮询。但是由于轮询是比较消耗CPU资源的,所以现代设备大多数都采用中断与处理器通信。处理器在中断到达时候会根据中断号找到对应的处理函数对该信号进行处理。这些处理函数我们成为中断处理例程,设备驱动程序负责为设备提供相应的中断处理例程,并注册到系统。从设备发出中断信号,到处理器最终调用处理例程处理完成。期间会经过很多步骤,这个过程构成了中断处理框架,本文将描述linux系统下的中断处理设计框架,然后讨论驱动程序如何利用接口注册中断处理例程。一、中断架

2020-09-18 13:31:21 1026

原创 驱动学习之同步IO

前言:本文讨论驱动程序中同步IO类型一、同步阻塞IO同步阻塞IO是驱动中最常用到的,这里我们分析一下他的实现。等待队列是内核中实现阻塞IO经常使用的办法,我们这里分析一下等待队列的机制。1等待队列这里先介绍两个结构体,等待队列头部及节点:内核实现了自动实现阻塞的接口,如下:1.定义等待队列头wait_queue_head_t wq; //定义等待队列头init_waitqueue_head(&wq) //等待队列头的初始化2.实现阻塞wait_event(wq, con

2020-09-16 15:00:20 100

原创 驱动学习之互斥与同步

一、并发的来源中断处理路径调度器的可抢占性多处理器的并发执行二、解决竟态的办法2.1 中断屏蔽对于单cpu范围来说,解决竟态的简单方法就是屏蔽系统的中断,屏蔽中断使得中断与进程之间的并发不会发生,并且由于Linux内核进程调度等操作都是依赖于中断来实现,内核抢占之间的并发也就可以避免了。local _ irq _ disable() //屏蔽中local _ irq _ enable() //开中断下面这两个宏是上面的变体,目的是为了防止在关闭中断的环境中使用上面两个宏之后,最后的环

2020-09-16 08:51:01 268

原创 Linux内核内存分配接口函数分析

前言:这里来分析一下Linux内核内存分配的原理1、物理内存的管理先来简单了解几个概念1.1 内存节点 node在计算机世界中,有两种物理内存的管理方式被广泛使用,他们分别是:UMA(一直内存访问)模型NUMA(非一致内存访问)模型两种模型的区别如下:在linux源码中以struct pglist_data数据结构来表示单个的内存节点,对于NUMA模型,多个内存节点通过链表链接起来,对于UMA模型,因为只有一个这种node,所以不存在链表。1.2 内存区域ZONE内存区域属于单个内存节

2020-09-14 11:34:15 827 1

原创 字符设备驱动原理分析

前言:开始学习字符设备驱动,这里会配合对内核的了解来学习学习字符设备前,先了解一个结构体:struct file_operations可以看到该结构体中都是一些函数指针变量,这些函数变量这里不做介绍,我们只需要知道现实中驱动的编写多是围绕着这些函数的实现来进行的。学习字符设备驱动,要先了解字符设备结构体,内核使用cdev结构体来描述一个字符设备。 struct cdev { struct kobject kobj; /* 内嵌的 kobject 对象 */ struct module *ow

2020-09-11 11:42:59 459

原创 内核中打印信息学习

在 Linux 中,内核打印语句 printk()会将内核信息输出到内核信息缓冲区中。内核信息缓冲区是一个环形缓冲区(ring buffer),因此,如果塞入的消息过多,就会将之前的消息冲刷掉。Linux 的 klogd 进程(一个系统守护进程,它截获并且记录下 Linux 内核日志信息)会通过/proc/kmsg 文件读取缓冲区,一旦读取完成,内核信息便从缓冲区中被删除。之后,klogd 守护进程会将读取的内核信息派发给 syslogd 守护进程(syslogd 记录下系统里所有提供日志记录的

2020-09-10 15:15:27 711

原创 内核模块加载过程分析

前言:想要了解内核模块的加载过程,需要先了解ELF文件格式,我的ELF文件格式解析文章地址如下:ELF文件格式解析https://blog.csdn.net/zj82448191/article/details/108441447在用户空间,用insmod这样的命令来向内核空间安装一个内核模块,本章将详细讨论模块加载时的内核行为,当我们加载一个模块时,insmod会首先利用文件系统的接口将其数据读取到用户空间的一段内存中,然后通过系统调用sys_init_module,让内核去处理加载的整个过程。一、

2020-09-10 14:22:25 1340

原创 Linux内核经典链表list_head常用方法总结

前言:一起分析内核最重要的链表list_head一、链表结构struct list_head { struct list_head *next, *prev;};二、链表初始化函数list_head 链表的初始化只是把 *next, *prev连个指针指向链表头,形成双向循环链表;#define LIST_HEAD_INIT(name) { &(name), &(name) } #define LIST_HEAD(name) \ struct list_head nam

2020-09-09 10:05:03 623

原创 ELF文件格式解析

前言:为了更好的学习驱动,这里打算了解一下内核模块实现机制,融汇贯通一下,可能会遇到很多之前没有接触的东西一、LINUX驱动学习之常用的模块操作命令(1)lsmod(list module,将模块列表显示),功能是打印出当前内核中已经安装的模块列表(2)insmod(install module,安装模块),功能是向当前内核中去安装一个模块,用法是insmod xxx.ko(3)modinfo(module information,模块信息),功能是打印出一个内核模块的自带信息。,用法是modinf

2020-09-07 17:36:46 4802

原创 Linux内核模块编译方法

一、分类静态编译:静态编译即为将驱动直接编译进内核 调试完之后,采用该方法动态编译:动态编译即为将驱动编译成模块二、动态编译这里提供一个Makefile,动态编译区分单文件与多问见,详细见Makefile内容:#obj-m = demo.o 单文件obj-m = demo.odemo-objs = 1.o 2.o 3.o PWD := $(shell pwd)KDIR:=/lib/modules/$(shell uname -r)/build/ all: m

2020-09-04 16:27:19 882

原创 Linux内核模块作用及组成

前言:Linux 设备驱动会以内核模块的形式出现,因此,学会编写 Linux 内核模块编程 是学习 Linux 设备驱动的先决条件一、模块的作用Linux 内核的整体结构非常庞大,其包含的组件也非常多,如果把所有需要的功能都编译到Linux内核,这会导致两个问题,一是生成的内核会很大,二是如果我们要在现有的内核中新增或删除功能,将不得不重新编译内核。所以引入了模块,模块可以随意添加到内核中或者从内核中卸载掉,模块特点如下:1.模块本身不被编译入内核映像,从而控制了内核的大小。2.模块一旦被加载,

2020-09-04 11:08:56 1246

原创 移植uboot-2012.04.01到JZ2440(九,制作补丁)

一、目的补丁文件就是通过对比当前文件和源码文件之后,得到修改内容的文件。有了补丁文件,就可以在uboot2012.04的源码之上,直接打补丁,就会变为移植好适配JZ2440的uboot,非常方便,在分享或者发布的时候,因为Uboot源码是统一的,所以只需要分享或者发布这个补丁文件即可。二、如何制作补丁1清除编译产生文件make distclean2 对文件夹重命名mv u-boot-2012.04.01 u-boot-2012.04.01-jz24403 重新解压uboot2012.04.

2020-09-03 15:29:30 109

原创 移植uboot-2012.04.01到JZ2440(八,烧写内核与文件系统)

一、烧写内核在上一篇文章中设置了默认内核启动参数和命令,如图:启动时内核先会进行倒数计时,如果没有操作,就会执行图中的命令,从nand flash中的kernel 分区处读取内核到内存中的0x30000000处,也就是SDRAM起始地址,然后从0x30000000处启动内核。所以,我们只需要将JZ2440官方提供的内核文件复制到TFTP服务器目录,然后将该内核文件提前烧写到nand flash的kernel分区即可,烧写方法如下:tftp 30000000 uImage_4.3nand eras

2020-09-03 15:13:02 191

原创 移植uboot-2012.04.01到JZ2440(七,设置默认环境变量)

一、定位问题目前移植的uboot支持SDRAM、Nor Flash、Nand Flash、DM9000网卡,但是还有一行警告没有处理:通过搜索这行日志内容找到所在位置:该函数中主要使用的 default_environment 数组,接着查看该数组内容,同样定义在该文件中,该数组的功能是根据我们定义的宏定义来设置默认环境变量参数。二、设置默认参数在单板配置文件include/configs/smdk2440.h中配置这些相关宏定义:2.1. 内核启动相关编译,下载到开发板,查看串口输出

2020-09-03 14:07:50 179

原创 移植uboot-2012.04.01到JZ2440(六 设置mtd分区表)

前言:这节继续移植uboot,让它支持mtd分区一、mtd分区规划及其作用uboot支持各种设备之后,接下来的工作就是烧写内核、烧写文件系统,所以需要对整块Nand Flash的空间作以规划,大致分为以下四个空间即可:bootloader空间内核参数空间内核空间文件系统空间但是目前我们仅知道uboot.bin被裁剪到了217KB,而不知道其它三个空间的信息,而且是第一次移植,对内核参数占用空间、内核空间的大小没有概念,所以我们需要借助别人已经制作好的内核和文件系统来查看这个信息。启动JZ24

2020-08-26 17:49:09 363

原创 移植uboot-2012-04.01到JZ2440(五 uboot裁剪)

前言:目前移植修改后的uboot327K,这里我们稍微进行裁剪1.裁剪方法裁剪的方法就是去掉单板配置文件include/configs/smdk2440.h中不想编译的宏。2.去掉usb部分3.去掉RTC支持4.去掉BOOTP、DHCP、DATE、USB支持5.去掉文件系统支持6.重新编译make distcleanmake smdk2440_configmake下载到开发板中,在串口终端中看看是否可以正常启动:...

2020-08-20 09:24:57 191

原创 移植uboot-2012.04.01到JZ2440(四)

前言:DM9000C网卡移植1.添加uboot中网卡的驱动到工程中由于uboot已经有支持DM9000C的网卡驱动,所以我么这里先把驱动添加到makefile中。从上面makefile可以看到,只要添加了CONFIG_DRIVER_DM9000这个宏,就能把改驱动增加进去,所以我们先去添加这个宏,我们先全局搜一下这个宏,看看还需要定义哪些相关的东西。找到别人使用该网卡定义的宏,我们这里也这样定义2.修改宏定义首先修改基地址,根据原理图我们知道,在2440上网卡是在back4区域,所以基地址

2020-08-19 17:42:38 133

原创 移植uboot-2012.04.01到JZ2440(三)

前言:这节我们来修改nand flash相关的代码,参考逻裸机操作第十一课JZ2440裸板开发发之Nand flash1.定位问题我们去掉之前屏蔽的nand的宏,如下:然后编译,错误如下:根据报错,我们定位到地方:nand这个指针有问题,初始化如下:接下来问题就变为struct s3c2410_nand这个结构体定义有问题,继续寻找该定义,果然,在文件arch/arm/include/asm/arch-s3c24x0/s3c24x0.h中,我们定义的是CONFIG_S3C2440,所以

2020-08-19 14:39:03 181

原创 移植uboot-2012.04.01到JZ2440(二)

前言:这节课我们解决nor flash的问题,需要了解nor flash的操作,这里参考之前的nor flash裸板操作:第十课JZ2440裸板开发之nor flash1.错误代码定位上节课修改的代码烧写后,串口信息如下,我们来定位flash的报错定位。全局搜索Flash,发现很多,不好找,我们沿着uboot的启动流程去找,发现就在第二阶段的board_init_r()函数中。我们来分析这段代码:#if !defined(CONFIG_SYS_NO_FLASH) puts("Flash: ")

2020-08-18 13:35:34 156

原创 移植uboot-2012.04.01到JZ2440(一)

前言:在移植之前,请熟悉JZ2440的裸板操作及uboot的编译配置及启动过程1.新建单板我们这里下载uboot-2012.04.01,然后解压,进入目录:tar -jxvf u-boot-2012.04.01.tar.bz2cd u-boot-2012.04.01我们基于2410来移植,所以接下来先创建相关的单板文件:(1)首先在board/samsung创建一个smdk2440的目录 cd u-boot-2012.04.01/board/samsung cp smdk2410/ s

2020-08-17 17:18:43 365

原创 第十二课JZ2440裸板开发之I2C

一、I2C基本知识1、iiciic的实质是串口通信的一种方式。IIC 即Inter-Integrated Circuit(集成电路总线) I2C总线是PHLIPS公司推出的一种串行总线,I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。2、物理接口(1)SCL(serial clock):时钟线,传输CLK信号,一般是I2C主设备向从设备提供时钟的通道。(2)SDA(serial data): 数据线,通信数据都通过SDA线传输3、通讯特征(1)串口通讯数据传输以字节为

2020-08-17 09:35:43 284

原创 第十一课JZ2440裸板开发发之Nand flash

一、NAND FLASH介绍1.1、原理图1.2 引脚功能介绍上节课我们介绍了nor flash与 nand flash的区别,这里不再继续介绍,这里主要介绍一下该开发板的NAND FLASH。我们先介绍一下所有的引脚。(1)我们可以看到,原理图中只有IO数据线,我们知道操作内存类接口的一般方式都是发命令、地址、数据,这里命令跟地址怎么发送呢?其实也是通过IO发送,只不过需要ALE、CLE的配合使用。引脚作用IO传输数据、地址、命令ALEALE高电平时,若CLE为低

2020-08-12 13:42:54 209

原创 第十课JZ2440裸板开发之nor flash

一、flash介绍常用的Flash类型有Nor Flash和NAND Flash两种,区别大致如下:Flash存储器件由擦除单元(也称为块)组成,当要写某个块时,需要确保这个块己经被擦除。Nor Flash的块大小范围为64kB、128kB:NAND Flash的块大小范围为8kB,64kB,擦/写一个Nor Flash块需4s,而擦/写一个NAND Flash块仅需2ms。Nor Flash的块太大,不仅增加了擦写时间,对于给定的写操作,Nor Flash也需要更多的擦除操作——特别是小文件,比如一

2020-08-11 16:27:09 488 1

PC-lint puls扫描工具

这里是linux下使用的工具,具体的使用方法我会总结一篇文章,如果不太会用的话可以找到我的文章参看一下。我也是摸索的前进,但是这个工具需要从官网填写邮箱申请一个三十天的许可证

2020-11-20

交叉编译工具链.zip

这个里面有两个压缩包及一个说明,主要是我我文章中介绍的JZ2400编译环境搭建的时候用到的。

2020-08-05

jz2440V3原理图及s3c2440芯片手册.zip

这里是jz2440-v3开发板原理图及S3C2440芯片手册,是购买JZ2440开发板的时候带的,这里上传文件,主要是希望配合我的jz2440裸板操作文章,另外赚点积分

2020-08-04

空空如也

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

TA关注的人

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