首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    嵌入式系统开发步骤[通俗易懂]

    建立交叉开发环境 配置开发主机 移植bootloader linux内核移植 建立并烧写根文件系统到目标板 开发嵌入式应用程序 部署与配置系统 (1)建立交叉开发环境 开发主机的操作系统一般选用某一个发行版本号的linux系统,如RedHatlinux等。linux内核版本号能够依据项目的详细需求而定,如2.4内核或者2.6内核。选择定制安装或所有安装,通过网络下载对应的gcc交叉编译器进行安装(比方arm-linux-gcc,arm-uclibc-gcc等),或者安装产品厂家提供的交叉编译器。 (2)配置开发主机 配置开发主机包含在开发主机上安装linux系统,配置交叉连接工具,如串口和网络接口。 (3)建立引导装载程序bootloader 从网络上下载一些公开源码的bootloader,依据自己详细芯片进行移植改动。

    03

    第4阶段——制作根文件系统之分析init_post()如何启动第1个程序(1)

    本文介绍了Linux操作系统中init进程的分析,init进程是Linux系统启动的第一个进程,负责控制系统运行的其他进程。文章首先介绍了init进程的基本信息,包括其定义、作用、生命周期等,然后详细分析了init进程的启动过程,包括内核传递参数、解析命令行参数、执行/etc/init/start.d/S85mount_root文件、执行/etc/init/start.d/S100sysinit文件、执行/etc/init/start.d/S101mountnfs_root文件、执行/etc/init/start.d/S102nfsmount_dev文件、执行/etc/init/start.d/S103/etc/init/local.conf中的脚本。文章还介绍了init进程的结束过程,包括执行/etc/init/stop.d/S100sysinit、执行/etc/init/stop.d/S101mountnfs_root、执行/etc/init/stop.d/S102nfsmount_dev、执行/etc/init/stop.d/S103/etc/init/local.conf中的脚本。最后,文章分析了init进程的启动和结束过程,并给出了具体的代码示例。

    08

    构建Linux根文件系统

    类似于Windows下的C、D、E等各个盘,Linux系统也可以将磁盘、Flash等存储设备划分为若干个分区,在不同分区存放不同类别的文件。与Windows的C盘类似,Linux一样要在一个分区上存放系统启动所必需的文件,比如内核映象文件(在嵌入式系统中,内核一般单独存放在一个分区中)、内核启动后运行的第一个程序(init)、给用户提供操作界面的shell程序、应用程序所依赖的库等。这些必需的、基本的文件,合称为根文件系统,它们存放在一个分区中。Linux系统启动后首先挂接这个分区──称为挂接(mount)根文件系统。其他分区上所有目录、文件的集合,也称为文件系统,比如我们常说:“挂接硬盘第二个分区”、“挂接硬盘第二个分区上的文件系统”。

    03

    揭开虚拟文件系统的云雾之多文件系统是如何运作的(基于linux1.2.13)

    由之前的分析中我们知道,挂载根文件系统后,系统里存在根文件系统的超级块和一个根节点inode。并设置了init进程的工作目录和当前目录为根节点。 我们知道文件操作是从open开始的,open就是根据文件路径找到对应的inode。并返回一个fd,后续的文件操作就可以通过fd找到inode,执行读写操作。所以我们就以open函数为例。分析多文件系统的运作。看看虚拟文件系统在抹平各个文件系统的差异后,又是如何决定使用哪个文件系统的。open函数的执行过程之前在这篇文章已经分析过,但是这篇文章里只是分析了某个文件系统中open函数的的调用过程。问题是,操作系统是如何知道应该使用哪个文件系统的呢? 这就是这篇文章的内容,让我们开始分析。阅读下面的内容之前,最好想看一下open函数执行过程的那篇文章。这里不分析open函数的过程了。我们看到open函数的执行过程中,最后通过lookup函数找到文件对应的inode节点。这就是魔法的开始,我们直接从这开始分析。lookup的函数核心代码是

    01

    Initramfs_正在生成initramfs

    一、initramfs是什么 在2.6版本的linux内核中,都包含一个压缩过的cpio格式的打包文件。当内核启动时,会从这个打包文件中导出文件到内核的rootfs文件系统,然后内核检查rootfs中是否包含有init文件,如果有则执行它,作为PID为1的第一个进程。这个init进程负责启动系统后续的工作,包括定位、挂载“真正的”根文件系统设备(如果有的话)。如果内核没有在rootfs中找到init文件,则内核会按以前版本的方式定位、挂载根分区,然后执行 /sbin/init程序完成系统的后续初始化工作。 这个压缩过的cpio格式的打包文件就是initramfs。编译2.6版本的linux内核时,编译系统总会创建initramfs,然后把它与编译好的内核连接在一起。内核源代码树中的usr目录就是专门用于构建内核中的initramfs的,其中的initramfs_data.cpio.gz文件就是initramfs。缺省情况下,initramfs是空的,X86架构下的文件大小是134个字节。

    02

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券