最小根文件系统的构建(基于JZ2440)

电力工程师必看:GOOSE/SV/MMS三协议在智能变电站中的分工与联动实例 本文深入解析了智能变电站中GOOSE、SV、MMS三大核心通信协议的分工与协同机制。GOOSE协议作为过程层的“闪电信使”,负责毫秒级传输跳闸命令等事件信息;SV协议则传输精确同步的电流电压采样值流;而MMS协议作为站控层的“管理语言”,实现设备监控与数据管理。三者基于IEC 61850标准,在过程层、间隔层和站控层之间高效联动,共同构建了智能变电站稳定可靠的通信骨架。 阅读详情

  1. u-boot:启动内核

  2. 内核: 启动应用程序

  3. 构建:根文件系统(应用程序存放处)

1 init进程

内核启动的最后一步是启动init进程, 代码在内核里init/main.c文件中,执行步骤如下

  1. 打开设备 open("/dev/console") (同时执行两次sys_dup(0),分别为标准输入、标准输出、标准错误,它们对应的文件描述符分别是0、1、2,其均指向同一设备)
  2. run_init_process("…")(…为命令行参数所指定 或 /sbin/init 或 /etc/init 或 /bin/init 或 /bin/sh)

Linux-2.6.22.6/init中的main.c 部分

/* This is a non __init function. Force it to be noinline otherwise gcc
 * makes it inline to init() and it becomes part of init.text section
 */
static int noinline init_post(void)
{
	free_initmem();
	unlock_kernel();
	mark_rodata_ro();
	system_state = SYSTEM_RUNNING;
	numa_default_policy();

	if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
		printk(KERN_WARNING "Warning: unable to open an initial console.\n");

	(void) sys_dup(0);
	(void) sys_dup(0);

	if (ramdisk_execute_command) {
		run_init_process(ramdisk_execute_command);
		printk(KERN_WARNING "Failed to execute %s\n",
				ramdisk_execute_command);
	}

	/*
	 * We try each of these until one succeeds.
	 *
	 * The Bourne shell can be used instead of init if we are
	 * trying to recover a really broken machine.
	 */
	if (execute_command) {
		run_init_process(execute_command);
		printk(KERN_WARNING "Failed to execute %s.  Attempting "
					"defaults...\n", execute_command);
	}
	run_init_process("/sbin/init");
	run_init_process("/etc/init");
	run_init_process("/bin/init");
	run_init_process("/bin/sh");

	panic("No init found.  Try passing init= option to kernel.");
}

init 程序

  1. 读取配置文件
  2. 解析配置文件
  3. 执行用户程序

2 构建最小根文件系统

2.1 环境

kernel:Linux-2.6.22.6,uImage_2.6;u-boot:u-boot-1.16,uboot.bin;busybox:busybox-1.7.0_patched;交叉编译器:arm-linux-gcc-3.4.5

2.1.1 编译busybox

2.1.1.1 什么是busybox

BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的shell。(来至百度百科)

BusyBox 将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件。这样的集合可以替代大部分常用工具比如的GNU fileutils , shellutils等工具,BusyBox提供了一个比较完善的环境,可以适用于任何小的嵌入式系统。(来至百度百科)

  1. tar xjf busybox-1.7.0_patched.tar.bz2 解压busybox;

    F:\嵌入式linux\jz2440\linux资料\002_JZ2440资料光盘_20180516(免费)\资料光盘\B盘

  2. 进入busybox 目录下的INSTALL文件查看编译过程

     make menuconfig     # This creates a file called ".config"
     make                # This creates the "busybox" executable
     make install        # or make CONFIG_PREFIX=/path/from/root install
    
  3. 执行 vi Makefile 添加如下内容,设置交叉编译工具

    将176行代码 CROSS_COMPILE   ?=  改为 CROSS_COMPILE   ?= arm-linux-
    
  4. 执行make menuconfig,设置“TAB”键补全

    Busybox Settings  --->
    	Busybox Library Tuning  --->
    		[*]   Tab completion 
    
  5. 执行 make

  6. 执行 mkdir /work/nfs_root/third_fs 在网络文件夹下创建一个文件夹

  7. 执行 make CONFIG_PREFIX=/work/nfs_root/third_fs install 安装到之前创建的文件夹中

  8. 执行 cd /work/nfs_root/third_fs 进入之前创建的文件夹中, 执行 ls -l 可以看到以下内容

    image-20200621201159193

2.1.2 构建etc目录

init 进程根据 etc/initab 文件来创建其他子进程,比如调用脚本文件配置IP地址、挂接
其他文件系统,最后启动shell等。

etc目录下的内容取决于要运行的程序,这里只需要创建3个文件: etc/initab、
etc/init.d/rcS、etc/fstab。

  1. 在 third_fs 中创建 etc 文件夹,然后在 etc 目录下创建 inittab 文件并添加 console::askfirst:-/bin/sh,如下(etc/inittab文件中的每条目录用来定义一个子进程,并确定它的启动方法,格式::::)

    image-20200621202929656

    以让标准输入/标准输出/标准错误都指向控制台;

2.1.3 构建dev目录

这里使用 mdev 来构建 dev,mdev 是 udev 的简化版本,它也是通过读取内核信息来创建设备文件。mdev的用法在busybox- 1.7.0/doc/mdev.txt文件中。

mdev的用途主要有两个

  1. 初始化/dev目录、动态更新
  2. 动态更新不仅是更新/dev目录,还支持热拔插,即接入、卸下设备时执行
    某些动作。

要使用mdev,需要内核支持sysfs文件系统,为了减少对Flash的读写,还要支持tmpfs文件系统。参考命令如下

$ mount -t tmpfs mdev I /dev	/*使用内存文件系统,减少对Flash的读写*/
$ mkdir /dev/pts		/* devpts用来支持外部网络连接(telnet)的虚拟终端*/
$ mount -t devpts devpts /dev/pts
$ mount-t sysfs sysfs /sys	/* mdev通过sysfs文件系统获得设备信息*/
$ echo /bin/mdev> /proc/sys/kernel/hotplug /* 设置内核,当有设备拔插时调用/bin/mdev 程序*/
$ mdev -S	/*在/dev目录下生成内核支持的所有设备的结点*/

mdev 是通过 init 进程来启动的,在使用 mdev 构造 /dev 目录之前,init 进程至少
要用到设备文件有 /dev/console 和 /dev/null,所以要建立这两个设备文件,执行以下步骤进行创建

  1. 在 third_fs 中执行 mkdir dev && cd dev 创建dev文件夹并进入

  2. 执行 ls /dev/console /dev/null -l 查看虚拟机中设备 console 和 null 的信息,然后在 dev 目录下创建相同的设备,如下(sudo mknod console c 5 1 和 sudo mknod null c 1 3)

image-20200621202134272

这里还未使用mdev,mdev在2.1.8小节出使用,以完善最小根文件系统。

2.1.4 安装glibc库

  1. 在 third_fs 中执行 mkdir lib 创建 lib 目录,然后在 /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib 中执行 cp *.so* /work/nfs_root/third_fs/lib/ -d, 将C库拷贝到根文件系统的 lib 目录中, -d 表示将是链接的文件依然以链接的形式拷贝;

2.1.5 设置网络文件系统

  1. 执行 sudo vi /etc/exports 添加 /work/nfs_root/third_fs *(rw,nohide,insecure,no_subtree_check,async,no_root _squash),设置 third_fs 为NFS文件并能被别人挂载,配置nfs后重启nfs sudo /etc/init.d/nfs-kernel-server restart
  2. 执行 set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.11:/work/nfs_root/third_fs ip=192.168.1.12:192.168.1.11:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 设置开发板启动自动挂载根文件系统,

2.1.6 用proc进行改进

  1. 至此内核已经可以挂载我们上面创建的根文件系统了,但还是缺乏部分文件(不能使用ps等命令)

    image-20200622102739618

    因此需要在根文件系统中创建 proc 目录,同时执行 mount -t proc none /proc 手动挂载虚拟文件系统(proc是内核提供的虚拟文件系统)

    image-20200622103114026

  2. 在 etc/inittab 中添加 ::sysinit:/etc/init.d/rcS脚本文件,然后执行如下命令,并添加相应内容

    image-20200621205353433

    让开发板自动挂载内核中的proc虚拟文件系统

2.1.7 最小根文件系统所含内容

  1. 至此,最小根文件系统即构造完毕,内容如下

    bin中存放的是ps等各种命令,均为指向busybox的链接文件

    image-20200622105925422

    dev中存放的是我们之前创建的设备字符文件,etc中存放的是配置文件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ctQzolMy-1592847912711)(mdPics/image-20200622110146836.png)]

    lib中存放的是我们之前拷贝的glibc库,以 .so 结尾的动态库文件

    image-20200622110546347

    proc中存放的是内核的虚拟文件系统

    image-20200622113641469

    sbin中存放的是ifconfig/reboot等命令,均为指向busybox的链接文件

    image-20200622111148680

    usr中存放的内容如下,它们都是指向busybox的链接文件

    image-20200622111724609

2.1.8 完善根文件系统

  1. 改善proc虚拟文件挂载方式,使用 mount -a 进行挂载,它会去读取etc/fstab内的内容并挂载相应的文件系统,执行如下命令创建fstab

    image-20200622124632835

    将 etc/init.d/rcS 中的内容修改为

    image-20200622123536549

  2. 使用 mdev (udev的简化版本),自动创建/dev/设备节点(取代手动创建设备节点,省事),再third_fs中创建sys目录并将etc/fstab的内容修改为

    image-20200622130905534

    将etc/init.d/rcS的内容修改为

    image-20200622131228971

    使用 mdev 之前 dev 下的内容为

    image-20200622131443343

    使用 mdev 之后 dev 下的内容如下(仅为部分截图),可以发现 proc 下挂载了许多文件系统,同时 dev 目录下的设备节点也多了许多

    image-20200622131756994

    至此,最小根文件系统已经比较完善了。

2.1.9 错误聚集地(问题还未解决,解决后将会进行更新)

  1. insmod xxx.ko正常,但是 cat /proc/devices 却没有(实则驱动并未装载成功)

2.2 环境

kernel:Linux-3.4.2,uImage_3.4;u-boot:u-boot-2012.04.01,uboot_new.bin;busybox:busybox-1.20.2;交叉编译器:arm-linux-gcc-4.3.2

2.2.1 更换交差编译器

2.2.2 编译busybox

  1. tar xjf busybox-1.20.2.tar.bz2 解压busybox;

  2. 执行make menuconfig,设置交叉编译

    Busybox Settings  ---> 
    	Build Options  ---> 
        	(arm-linux-) Cross Compiler prefix 	
    
  3. 执行 make

  4. 执行 mkdir /work/nfs_root/fourth_fs 在网络文件夹下创建一个文件夹

  5. 执行 make CONFIG_PREFIX=/work/nfs_root/fourth_fs install 安装到之前创建的文件夹中

2.2.3 安装glibc库

  1. 进入交叉编译文件中(例:/usr/local/arm/4.3.2),执行如下命令查找库文件

    image-20200622150153299

    然后执行如下命令将库文件拷贝到根文件系统中

    image-20200622150559454

2.2.4 构建etc目录

  1. 执行 sudo cp third_fs/etc fourth_fs/ -rf 将之前创建的third_fs内的etc拷贝到新建的根文件系统中

    image-20200622152322343

2.2.5 构建dev目录

  1. 执行 mkdir dev && cd dev
  2. 执行 sudo mknod console c 5 1 和 sudo mknod null c 1 3

2.2.6 构建其他目录

  1. 执行 mkdir proc tmp sys root, 创建其他需要的目录

2.2.7 错误聚合

  1. rmmod时出现如下错误

    image-20200622201224517

    在lib目录下创建modules(空目录即可)解决错误

    image-20200622201358893

  2. 然后又来了个问题,用rmmod卸载驱动依然出错(崩溃中…)

    image-20200622201813079

    在lib/modules 下创建3.4.2目录(空目录即可)解决问题

    image-20200622202737412

别再让会议变‘回音壁’:手把手教你调优WebRTC的AEC3回声消除(附实战代码) 本文深入解析WebRTC的AEC3回声消除技术,提供从参数调优到声学环境适配的实战指南。通过诊断回声特征、解剖核心参数(如filter.length_blocks和delay_estimate_smoothing)以及应对特殊场景(如密闭空间与开放办公区),帮助开发者有效解决视频会议中的回声问题,提升语音通信质量。附有实战代码和调试工具,适合需要优化实时通信体验的开发者。 阅读详情

相关推荐

AB脉冲详解(编码器,PLC,上位机)

编码器线有些是用不到的。Z脉冲:360度中,只有1度是输出,输出能力是。编码器实际就是发光二极管,所以电流超过20ma会缩短寿命或损坏。

cfqq1989的博客 1万+

根文件系统构建(JZ2440-S3C2440)

根文件系统构建(JZ2440-S3C2440) uboot的目的是启动内核,内核的目的是为了启动应用程序,应用程序位于根文件系统上面。 1、使用busybox制作根文件系统 busybox下载地址:http://www.busybox.net/downloads/ 这里使用busybox-1.7.0(包名:busybox-1.7.0.tar.bz2   ) 解压命令:tar xj

liyuqian199695的博客 3088

阿里天池新闻推荐实战:多路召回策略解析与优化

本文深入解析阿里天池新闻推荐项目中的多路召回策略,包括ItemCF、UserCF、YouTubeDNN等五种召回模型的协同应用与优化技巧。通过实战案例展示如何提升推荐系统效果,特别针对冷启动问题提出创新解决方案,帮助开发者构建高效的新闻推荐系统。

weixin_26918763的博客 415

JZ2440:busybox构建根文件系统

busybox版本是:1.24.2 此文章的链接:http://blog.youkuaiyun.com/qqliyunpeng/article/details/52163265 我的nfs的目录是/source 设置的uboot的启动参数是: LIP2440# baudrate=115200 bootargs=noinitrdboot=/dev/nfsrwnf...

老鹏 3268

衡山派Luban-Lite系统SDIO无线网络配置实战:以D133CBV-QFN88开发板与RTL8189模组为例

本文详细介绍了在衡山派D133CBV-QFN88开发板上,为Luban-Lite系统配置SDIO无线网络的完整实战流程。通过配置SDMC接口、RTL8189 Wi-Fi驱动、lwIP协议栈及内核参数,并解决编译分区问题,最终实现Wi-Fi网络连接与测试,为嵌入式设备联网提供清晰指导。

weixin_35677363的博客 267

【立创开源】太阳能板充电方案单节3.7v锂电池充电

一直对太阳能板感兴趣,老是感觉充电好麻烦,要是放在那里就可以自己充电多好,所以尝试做了一个太阳能充电板。因为这几天都是阴天,所以测试效果不太好,但是下雨天也是能充电的,但是基本只能维持电量不掉,电压差不多4.2v以上,电流只有2mA。中午出太阳的时候,隔着玻璃放在太阳下测试,电流有12mA以上。能充起一点点电。等大晴天看一看能不能达到卖家说50mA。┗( T﹏T )┛感觉达不到。这个东西只能当一个玩具(;′⌒`)。不过如果汽车上一些行车记录仪加一个这个,汽车经常在太阳下停车,可能再也不用充电了。

贾saisai的博客 1万+

jz2440:开发板的u-boot + 内核 + 根文件系统搭建(2)

首先要在开发板上搭建一个Linux系统,需要完成以下几个步骤 1.BootLoader-----打补丁、编译 u-boot---执行以下步骤----最终目的:启动内核 $ tar xjf u-boot-1.1.6.tar.bz2 //解压 u-boot-1.1.6.tar.bz2 压缩包 $ cd u-boot-1.1.6 //进入 u-boot-1.1.6 目录 $ patch -p1 < ../u-boot-1.1.6_jz2440.patch //对 u-boot-1.1.6 打 patc

zion--6135的博客 1380

可维护的 SAP UI5 Theming 策略:从 CSS 级联与特性选择器到 UI Theme Designer 的工程化落地

摘要:SAP UI5主题化是一个涉及CSS级联、选择器特异性和主题参数的系统工程,与应用逻辑解耦以实现品牌化和无障碍适配。轻量级调整优先使用附加CSS,重大改动才考虑创建新主题。样式冲突需通过特异性原则解决,避免滥用!important。动态添加样式应使用addStyleClass而非直接操作DOM。主题可通过bootstrap参数、URL或运行时API设置,企业级主题推荐使用UI Theme Designer。自定义内容应消费主题变量以实现一致性,避免直接修改控件内部结构或内联样式。工程化落地需规范分层和

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 307

Linux内核学习(3) 最小系统制作2 busybox制作initrd.img和根文件系统

busybox制作initrd.img和根文件系统 参考书籍:《深度探索Linux操作系统 系统构建和原理解析》 参考博客:https://blog.youkuaiyun.com/mao0514/article/details/51248738 (一)开发环境介绍 1.使用win7_64的笔记本安装Virtualbox虚拟机,笔记本cpu为i5-2450m。虚拟机上安装Ubuntu16.04系统作为编译环境,...

xiaoshixiu的专栏 6069

【项目实战】DevOps制品管理之JFrog Artifactory介绍

JFrog Artifactory是一款领先的二进制软件制品仓库管理工具,由JFrog公司开发。

奶爸的编程之路,也就一周冷个三天 1354

设计智能化的企业并购目标筛选多维度评估模型

企业并购是企业扩张和战略调整的重要手段,其目的在于实现资源的整合、优势互补和效率提升。评估指标单一:传统评估方法主要依赖财务指标,如净利润、市场份额等,忽视了企业其他重要的非财务指标,如品牌价值、客户满意度等。主观性较强:评估过程中,往往依赖于评估人员的经验和直觉,缺乏客观性,导致评估结果可能存在偏差。评估效率低:传统的评估方法通常需要大量的人力和时间,效率较低,难以应对大规模并购项目的需求。因此,设计一种智能化的企业并购目标筛选多维度评估模型,显得尤为必要。

SuperAGI2025 1034

JZ2440开发板nand flash出现坏块的解决办法

前言:我在JZ2440烧写linux内核镜像(uImage)之后,内核可以正常启动,但是我烧写玩Yaffs2格式的根文件系统之后,内核启动不了,根据我以往的学习和工作经验,可能是nand flash出现了坏块,(nand flash是比较容易出现坏块的),下面是我的解决办法。 CPU : jz2440 u-boot: u-boot-1.1.6 kernel: linux-4.19-rc3 r...

gaoquan.wu 2798

4位无符号比较器设计

4位无符号比较器设计

好好学习,天天向上 7891

创建最小根文件系统

开发板 : JZ2440 Linux内核 : Linux-2.6.22.6 Busybox1.29.3 最小根文件系统所需的部分: 1./dev/console /dev/null :创建根文件系统所必备的,指出了所需要的标准输入,标准输出,标准错误设备终端。 2.init 程序: 当busybox安装好时,init程序文件已有。 3./etc/inittab: 4.配置文件...

weixin_30670925的博客 120

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

构建最小根文件系统

http://blog.sina.com.cn/s/blog_7943319e01018g5w.html 构建最小根文件系统 一个最小根文件系统必须的项: 1. /dev/console   这个在内核启动时打开:sys_open((const char __user *) "/dev/console", O_RDWR, 0)   /dev/null              当不设置标...

weixin_34060299的博客 131

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JZ2440 ping不通PC主机的原因及解决办法

刚刚入手yik

coderew的专栏 9199

JZ2440采用nfs挂载根文件系统

意思是 将/home/a1/jz2440/rootfs/mynfs目录下的所有内容共享出去运行。

zxz_Fine的博客 849

初学JZ2440之编译最小根文件系统(上)

第一步:下载busybox源码:busybox-1.7.0 die

生命的紫金颜色 1575

[无中生有]移植u-boot(2020.7)至 JZ2440

目录下载建立工程 本文是基于韦东山视频的学习笔记 下载 百度u-boot,去官网,点源码,去FTP服务器直接去下载最新的就好。 建立工程

weixin_36778746的博客 1408

arm linux 内核修改,【内核配置】一、从标准linux-2.6.22.6系统到ARM平台JZ2440开发板的linux系统的修改攻略...

主 机:VMWare--Ubuntu-16.04.2-x64-100ask开发板:JZ2440--256M NandFlash,   2M NorFlash,   64M SDRAM,   LCD-4.3寸;bootlorder:u-boot1.16,      Kernel:2.6.22.6;编译器:arm-linux-gcc-3.4.5工作目的:裁剪、打补丁、配置、修改,得到一个包含u...

weixin_39847099的博客 411

JZ2440开发板——LCD

详细介绍了LCD有关的内容,包括LCD控制器的使用,以及LCD显示的实例。

主要记录嵌入式学习与开发过程。 3021

基于S3C2440构建根文件系统

如何构建根文件系统 2016.6.3 1.内核怎样启动第一个应用程序 a.打开了第一个设备 run_init_process(execute_command)要么是命令行里指定的 run_init_process("/sbin/init") ps查看当前正在跑的程序 init程序: a.读取配置文件 b.解析配置文件 c.执行用户程序 ls -l

beyond_str的博客 399

JZ2440开发板移植Qtopia2.2.0

参考文献: 《嵌入式Linux应用开发》韦东山编著 http://emb.hqyj.com/column/column97.htm (1)移植环境: 环境:ubuntu9.10 gcc: 4.4.1 arm-linux-gcc: 3.4.5 (2)移植Qtopia依赖的库 ① 编译、安装j...

简单博客 605

【JZ2440笔记】系统时钟设置

目录 一、前言 二、实验目标 三、S3C2440的时钟体系 四、代码编写 五、实验总结 一、前言 JZ2440开发板上的外部晶振是12MHz的,开发板一上电时S3C2440的系统时钟为12MHz,但是S3C2440最高系统时钟可以跑到400MHz,为了发挥CPU更高的性能,需要将外部晶振输入的12MHz时钟通过芯片内部的锁相环电路进行倍频,然后获得400MHz的系统时钟,使得CPU指令执行速度变快,同时也相应提升HCLK和PCLK总线的速度。 二、实验目标 将S3C2440的FCLK.

心城追梦的博客 682

【JZ2440笔记】裸机实验使用NandFlash

目录 一、前言 二、实验目标 三、资源分析 四、程序代码 五、实验总结 一、前言 S3C2440芯片内部没有ROM可以放用户代码,所以用户代码需要被保存在外部的存储器当中,如果是NorFlash的话可以直接在NorFlash中运行程序,但是NorFlash比较贵,一般都用NandFlash作为存储介质,以SDRAM为代码的运行空间。JZ2440开发板上有一颗256MB容量的NandFlash芯片,记录下学习过程,代码是开发板自带的例程。 二、实验目标 在SRAM运行程序关闭看门狗,初.

心城追梦的博客 628

TQ2440制作最小根文件系统

构建根文件系统第一件事情当然是编译busybox、这里选用的版本是busybox-1.7.0 一、编译busybox: 1. 配置编译busybox,首先解压busybox tar xjf busybox-1.7.0.tar.bz2  2. 打开Makefile文件对交叉编译工具进行配置 vi makefile /CROSS_COMPILE   搜索关键字 然后添加 arm-li

Nguhyw的专栏 768

站在芯片原厂角度移植最新u-boot 2020.07到jz2440开发板(1)(全部驱动使用设备树与dm设备模型)

1. 概述 1.1 缘由 最近在待业,由于之前的工作是在一个初创的芯片原厂做底层驱动开发,所以最近想着能不能以一个芯片原厂的角度移植最新的u-boot到jz2440开发板呢?于是便有了这篇文章。 整篇文章遵循着以问题为导向的讲解方式,重实践,基本没有原理性的知识,并且从零开始进行移植。我相信,如果你能认真的跟着文章实际操作一把,以后不管遇到什么类型的芯片、什么类型的开发板,同样都能完成从零移植u-boot的工作。 1.2 实现的功能 移植的u-boot 2020.07目前实现的功能如下: 如标题所述,全部

渐进的专栏 1460
上一篇: S3C2440之LCD简单操作篇
下一篇: 基于Linux的字符设备驱动框架(使用中断、poll、异步通知、同步互斥阻塞)
so恒久
博客等级 码龄7年 1109粉丝 13原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值