mini2440系统移植篇之init启动流程

发布者:SparklingMoon最新更新时间:2016-12-01 来源: eefocus关键字:mini2440  系统移植  init  启动流程 手机看文章 扫描二维码
随时随地手机看文章

1. 启动

内核启动应用程序/linuxrc

busybox ini.c

init_main

设置信号处理函数

初始化控制台

parse_inittab解析inittab

1.1. 解析inittab

file = open(INITTAB, “r”); //打开配置文件/etc/inittab

new_init_action

//1 创建一个init_action结构,填充

//2 把结构放入init_action_list链表

默认配置

::sysinit:/etc/init.d/rcS

::askfirst:/bin/sh

tty2::askfirst:/bin/sh

tty3::askfirst:/bin/sh

tty4::askfirst:/bin/sh

::ctrlaltdel:/sbin/reboot

::shutdown:/sbin/swapoff -a

::shutdown:/bin/umount -a -r

::restart:/sbin/init


1.2. 运行


  1. /* First run the sysinit command */  

  2. run_actions(SYSINIT);  

  3.   

  4. /* Next run anything that wants to block */  

  5. run_actions(WAIT);  

  6.   

  7. /* Next run anything to be run only once */  

  8. run_actions(ONCE);  

  9.   

  10. /* Now run the looping stuff for the rest of forever */  

  11. while (1) {  

  12.     /* run the respawn/askfirst stuff */  

  13.     run_actions(RESPAWN | ASKFIRST);  

  14.   

  15.     /* Don't consume all CPU time -- sleep a bit */  

  16.     sleep(1);  

  17.   

  18.     /* Wait for any child process to exit */  

  19.     wpid = wait(NULL);  

  20.     while (wpid > 0) {  

  21.         /* Find out who died and clean up their corpse */  

  22.         for (a = init_action_list; a; a = a->next) {  

  23.             if (a->pid == wpid) {  

  24.                 /* Set the pid to 0 so that the process gets 

  25.                  * restarted by run_actions() */  

  26.                 a->pid = 0;  

  27.                 message(L_LOG, "process '%s' (pid %d) exited. "  

  28.                         "Scheduling for restart.",  

  29.                         a->command, wpid);  

  30.             }  

  31.         }  

  32.         /* see if anyone else is waiting to be reaped */  

  33.         wpid = wait_any_nohang(NULL);  

  34.     }  

  35. }  



关键字:mini2440  系统移植  init  启动流程 引用地址:mini2440系统移植篇之init启动流程

上一篇:mini2440硬件篇之MMU
下一篇:mini2440系统移植篇之rootfs制作

推荐阅读最新更新时间:2024-03-16 15:22

mini2440学习——uboot新手入门
在下载Uboot前,需要准备好以下工作:1.usb下载线和串口线,用于串口输出信息和程序下载,2.编译好的mini2440uboot.bin。 在编译.bin文件前需要对工程进行一次make distclean。否则可能会出错,生成bin文件后,将硬件连线接好,在虚拟机中连接usb下载线。 首先安装dnw,在bin文件下,使用dnw将程序烧录到开发板中。在这之前还有一个特别重要的步骤,下面先从这个步骤说起。 一、使用Jlink,将suppervivi下载到开发板,用来引导安装程序。1.选择Open Project--》2440.jflash。 2.选择Target--》connect,再选择erase chip。
[单片机]
<font color='red'>mini2440</font>学习——uboot新手入门
TQ210 —— s5pv210 lowlevel_init.S分析(uboot第一阶段)
/* * Memory Setup stuff - taken from blob memsetup.S * * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl) * * Modified for the Samsung SMDK2410 by * (C) Copyright 2002 * David Mueller, ELSOFT AG, d.mueller@elsoft.ch * * See file CR
[单片机]
个人修改的用于MDK的2440init.s
;====================================================================================== ; 文件名: 2440INIT.s ; 描述: 1).ARM 指令集, ; 2).小端格式 ; 3).NOR Flash总线16位,大小2MB ; 4).NAND Flash型号:K9F2G08,大小256MB ; 5).GPIO总线32位, ; 更改日期: 2012年1月31日 ;======================================================================================
[单片机]
基于Intel PXA270的WinCE操作系统移植
随着科学技术进步和3G时代的到来,高性能PDA产品作为一种电子消费品越来越受青睐。作为这些高性能的PDA产品核心的嵌入式实时操作系统是开发嵌入式应用的关键环节。向来以界面友好,易操作性,易开发性为卖点的Windows CE.net嵌入式操作系统得到了广泛的使用。然而,WindowsCE在不同CPU,不同硬件环境下的移植成为了限制其进一步发展的障碍。本文利用PlatformBuilder工具并以EEliod Evluation开发板为对象,介绍了基于Intel PXA270WindowsCE的移植方法和内容。并给出了在此操作系统成功开发的应用程序的运行结果。 1.系统硬件平台 论文使用的开发平台为深圳亿道公司提供的EEliod
[单片机]
LPC1768 SPI模式下SD卡FatFs文件系统移植
最近在LPC1768 SPI模式下移植SD卡FatFs(版本R0.09a)文件系统成功,总结一下移植过程。 一、底层驱动 使用的SSP0的SPI模式驱动,SSP时钟开始使用的25M。SD卡驱动测试完成,可读写擦除测试没有问题之后开始文件系统移植。 要用到的底层驱动函数有: MMCSD_TYPE MMCSD_Init(void) BOOL MMCSD_EraseBlocks(uint32_tblkStart,uint32_t blkEnd) BOOL MMCSD_ReadSingleBlock(uint32_tblkIndex,uint8_t *pBytes) uint32_t MMCSD_ReadMul
[单片机]
以模块的方式加载DM9000驱动 (for mini2440
注意事项: 确保开发板内核中不存在DM9000(内核在编译时选择以模块方式编译DM9000) 如果在已经把DM9000编译进内核的开发板安装,会提示DM9000已安装。 报错如下: dm9000: module is already loaded insmod: cannot insert 'dm9000.ko': invalid_parameter. 1、把dm9000.ko模块拷贝到开发板中 U盘拷贝 2、启动Linux后,加载模块: #insmod dm9000.ko
[单片机]
以模块的方式加载DM9000驱动 (for <font color='red'>mini2440</font>)
使用u-boot_2016_01启动mini2440(一)启动代码
mini2440的soc用的是s3c2440,因为板子买回来烧写过NOR,而且NOR启动也过于简单,所以我主要记录下NAND启动。s3c2440的NAND启动原理,是硬件通过引脚判断NAND启动后,会搬运NAND从0地址开始的前4K内容到SRAM上,然后在SRAM上运行起来,这段4K的代码,必须至少要初始化DDR,并且搬运bootloader到DDR,才能运行接下来的代码。普通的arm bootloader的启动流程来看,board_init_f应该在relocate_code之前运行,用来计算将要搬运的目的地址和栈寄存器地址等等,但是因为board_init_f代码段太大,编译不进前4K,所以,网上通用的做法好像是先预设relo
[单片机]
Linux-2.6.32.2内核在mini2440上的移植(十一)---移植SD卡驱动
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,linux 版本:linux-2.6.32.2 7,参考文章: 嵌入式linux应用开发完全手册,韦东山,编著。 Mini2440 之Linux 移植开发实战指南 【1】在内核中注册SD 设备驱动 Linux-2.6.32.2 已经自带了S3C24
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved