1.安装mkyaffsimage, mkyaffs2image命令(用来制作yaffs文件系统)
众所周知,JZ2440 V2很小巧,精致。今天单就JZ2440的串口来讨论一些问题。我们在用串口进行调试的时候,需要用JZ2440自带的一根USB线连接电脑USB口和开发板的USB-com1口。先来看一下JZ2440的串口大致连接图:
终于自动挂载文件系统成功了!!!出错的地方两个!!! 第一,恢复出厂设置一定要用eop下载uboot,dnw下载的不行!!!最后记得erase nand params!! 第二,set bootargs noinitrd root=/dev/nfs nfsroot=202.193.61.195:/work/nfs_root/first_fs ip=202.193.61.196:202.193.61.195:202.193.61.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 参数解读: nfsroot=202.193.61.195: ubuntu ip地址 /work/nfs_root/first_fs要挂载的目录 ip=202.193.61.196: 单板ip(恢复出厂设置后记得先配置ip,手动挂载下能不能成功,可以成功的话再修改bootargs自动挂载!) 202.193.61.195: 依然是ubuntu ip !!!!!注意!!! 202.193.61.1: 网关,只要处于同一网段就好。 255.255.255.0:: 子网掩码 eth0: 网卡,一般都是0 off 是否自动配置 off就可以
内核:linux-2.6.22.6 ubuntu:Ubuntu 9.10 开发板: JZ2440(方法通用,不局限于JZ2440)
我们经常使用uboot命令,虽然资料光盘->常见问题目录有U-boot常用命令汇总文档,但从大家的反馈来看,并没有很多人注意到这个文档,所以把它挪到这里。如此全的uboot命令汇总,建议收藏。
在第一期视频 : 第0课第7节_刚接触开发板之制作根文件系统及初试驱动.wmv ,因为要测试驱动,所以必须要把驱动程序弄到开发板里才行。 于是韦老师介绍了两种方式:
4. 打开SecureCRT(在资料光盘->windows工具目录),如下设置连接串口
根据给定的文章内容,撰写摘要总结。
开发板:jz2440 主机linux:ubuntu 9.10(资料光盘那个) 内核:linux2.6.22.6 交叉编译器:arm-linux-gcc 3.4.5(也可以用毕业班4.3.2那个编译器,不过我没找对lib,失败了,先不深究) busybox:busybox-1.21.0.tar.bz2 本来想用韦老师视频用的busybox-1.17.0,后来发现不支持ftp和tftp, 只好放弃了
摘要总结:本文介绍了使用NFS作为根文件系统启动的详细步骤,包括设置U-Boot的bootargs、更改内核编译选项、使用NFS共享文件系统等。作者通过一个实际的例子演示了如何使用NFS作为根文件系统,并分享了U-Boot命令行工具的使用方法。
龙芯的系统可以存放在 Nand Flash,SD 卡,U 盘,固态或者是网络加载,迅为的龙芯开发板核心板默认没有焊接 Nand Flash,是将文件系统存储在底板的固态硬盘上,这一章节我们将系统烧写到 U 盘,也可以称之为 U 盘启动。
在上节制作busybox后(位于/work/nfs_root/mini_fs), 然后根据以下5个来构建最小根文件系统: (1)/dev/console(终端控制台, 提供标准输入、标准输出以及标准错
这是linux tar文件,需要解压在linux机器。这是主要tar文件IPNC RDK安装。这个包含在以下文件
initramfs概述 initramfs与initrd类似,也是初始化好了且存在于ram中的,可以压缩也可以不压缩。但是目前initramfs只支持cpio包格式,它会被populate_rootfs->unpack_to_rootfs(&__initramfs_start, &__initramfs_end – &__initramfs_start, 0)函数(解压缩、)解析、安装。
文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构; 即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区
对于Linux爱好者,你是否也有这样的困扰,为了学习Linux而去购买昂贵的开发版,这大可不必,QEMU模拟器几乎可以满足你的需求,足够你去学习Linux,它能够模拟x86, arm, riscv等各种处理器架构,本文将向你呈现的不是QEMU/虚拟化的原理解读,而是如何搭建一个用于学习linux的QEMU环境,当然对于Linux内核的学习这已经足够了。
QEMU是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以GPL许可证分发源码的模拟处理器,在GNU/Linux平台上使用广泛。Bochs,PearPC等与其类似,但不具备其许多特性,比如高速度及跨平台的特性,通过KQEMU这个闭源的加速器,QEMU能模拟至接近真实电脑的速度。
本节主要学习: 详细分析UBOOT中"bootcmd=nand read.jffs2 0x30007FC0 kernel;bootm 0x30007FC0" 中怎么实现bootm命令启动内核.
本文介绍了从裸机程序、操作系统和硬件抽象层三个方面分析Linux内核,并详细介绍了Linux内核的初始化过程、进程管理、内存管理、设备驱动、中断处理、性能优化等方面的知识。
u-boot相当于我们PC机的BIOS,,在PC上厂商为我们做好了图形界面,操作起来非常便利。虽然在2440中u-boot并没有界面,但是百问网制作好的uboot中有目录菜单,比较常用的操作都列了出来,开发板上电后,在倒计时结束之前按下任意键进入uboot后就可以看到下面的菜单及说明:
在platform_device部分有简单说明描述设备有两种方法:一种是使用platform_device结构体来指定;另一种是使用设备树来描述。
我们需要编写设备树文件 (dts: device tree source) ,它需要编译为 dtb(device tree blob) 文件,内核使用的是 dtb 文件。
移植内核:2.6.30.4 内核根目录下的.config为当前配置内核的且已经配置好的内核配置。make zImage以此为依据 配置内核的过程: cd linux-2.6.30.4(进入Linux根目录) cp arch/arm/configs/s3c2410_defconfig /linux-2.6.30.4(作为配置参考,考到根目录下) mv s3c2410_defconfig .config(改名为.config) make menuconfig ARCH=arm(ARCH=arm不能少) 配置过程 退出时记得选yes保存为.config(确保该配置是你已经配置且保存的配置,就算不改动也要保存。否则不能生成.config) make zImage ARCH=arm CROSS_COMPILE=arm-linux-(ARCH=arm不可少) 或者 Makefile中定于ARCH=arm CROSS_COMPILE=arm-linux- 1,make s3c2410_defconfig(生成.config) 2,make zImage 即可生成压缩内核印象 uboot引导内核,入口点必须为0x30008000 zImage:go 0x30008000 uImage:bootm 0x30008000 busybox下载地址: http://busybox.net/ linux快速修改文件夹及文件下所有文件与文件夹权限 chmod 777 * -R uboot的tftp下载出现如下错误: TFTP error: 'Permission denied' (0) 改正方法就是给待下载的文件加上可执行(chmod 777 文件)权限 uboot的使用:tftp下载内核,直接用交叉网线连接PC(实际上为虚拟机)和开发板即可 uboot启动之后,输入:printenv 查看 serverip是不是你的虚拟机的ip(终端ifconfig即可查看) ipaddr要和serverip在同一个网段,即ip的前三段必须相同 ethaddr:开发板dm9000的MAC物理地址 netmast:子网掩码:255.255.255.0 serverip,ipaddr,ethaddr,netmast不符合要求的话,可以使用命令设置:(示例) setenv serverip 169.254.209.223 setenv ipaddr 169.254.209.113 setenv netmast 255.255.255.0 setenv ethaddr 00:01:02:03:04:05 saveenv //设置完毕记得保存环境变量 uboot启动内核:uboot版本(2009.08) 条件:uboot的机器码和内核的机器码要一样 uboot部分修改: 机器码: #gedit board/samsung/my2440/my2440.c gd->bd->bi_arch_number = MACH_TYPE_SMDK2440 内核部分:内核版本(2.6.30.4) #gedit arch/arm/mach-s3c2440/mach-smdk2440.c MACHINE_START(SMDK2440, "SMDK2440") #gedit arch/arm/kernel/head.S //在ENTRY(stext)下添加如下代码 ENTRY(stext) mov r0, #0 mov r1, #0x3f0 //上面的MACH_TYPE值1008换成十六进制就是0x3f0 ldr r2, =0x30008000 内核中的nand分区一定要和bootloader中的一致: #gedit arch/arm/plat-s3c24xx/common-smdk.c offsize size uboot : 0x00000000 0x00030000 //192kb param : 0x00030000 0x00040000 //这个环境变量的地址范围配置的CONFIG_ENV_OFFSET一致 kernel: 0x00080000 0x00500000 //5mb root : 0x00580000 0x0c800000 //200mb #gedit uboot/include/cofings/mini2440.h 查看:MTDPART_DEFAULT = " " //默认分区 编译得到内核zImage uImage的制作: 先将u-boot下的tools中的mkimage复制到主机的/usr/local/bin目录下,执行以下命令: mkimage -n 'linux-2.
之前系列的文章介绍了如何编译Uboot、Kernel以及使用默认的ramdisk根文件系统来构建一个完整的嵌入式Linux系统,本篇文章介绍如何从头制作一个放在NAND Flash上的根文件系统。经过我这段时间的总结,rootfs相关的编译、配置等工作还是比较麻烦的。所以你可能会看到一般做核心板的第三方厂家会建议初学者直接使用现成提供的文件系统,比如一个做NUC972核心板的厂家,其文档里这么描述:
参看:UG: DaVinci PSP Installation on DM36x EVM
在上一章使uboot支持网卡传输文件后,但是每次启机时,环境变量都要变为默认值,需要重新设置ip,MAC地址才行,由于没有配置mtdparts命令,启动内核也不成功
烧写内容 : BootLoader, Linux Kernel, File System;
基于X86架构的Linux内核,在移植驱动的过程中,发现GPIO和I2C的device ID添加到pnp驱动框架后无法进入probe函数,后面找了下原因,因为pnp遵循的是ACPI规范,是由于如下Hardware ID字段是需要从BIOS中进行描述的,而目前的驱动匹配不到对应的字段,自然就不可能注册成功了。 PNP是什么东西?不是三极管的那个PNP啦,这个PNP表示的是:Plug-and-Play,译文为即插即用。 PNP的作用是自动配置底层计算机中的板卡和其他设备,然后告诉对应设备都做了什么。PnP的任务是把物理设备和软件设备驱动程序相配合,并操作设备,在每个设备和它的驱动程序之间建立通信信道。然后,PnP分配下列资源给设备和硬件:I/O地址、IRQ、DMA通道和内存段。即插即用设备配置的控制权将从系统BIOS传递到系统软件,所以驱动中一定会有代码进行描述,到时可以跟一下这部分的代码深入了解一下。由于PNP遵循ACPI的规范,那么既然是规范,那肯定要照着做了,规范怎么说,那就怎么做。 以下是关于ACPI Spec中对Hardware ID的描述,描述如下:
本文所使用的主机环境为kubuntu 12.10,然而一般情况下,下面涉及到的命令对基于Debian的(X)ubuntu系列都应该适用。
目标: (1)创建Source Insight 工程,方便后面分析如何启动内核的 (2)分析uboot传递参数,链接脚本如何进入stext的 (3) 分析stext函数如何启动内核: (3.1
模块被加载后,在/sys/module/目录下降出现以此模块名命名的目录 root@dm368-evm:/sys/module# ls 8250 lockd snd_pcm_oss tuner_simple cmemk mt20xx snd_timer tuner_xc2028 davinci_display mt9p031 soundcore tvp514x davinci_enc_mngr musb_hdrc spurious usb_storage davinci_mmc netpoll sunrpc usbcore davincifb nfs tcp_cubic usbserial dm365_imp option tda8290 usbtest dm365mmap printk tda9887 videobuf_core edmak scsi_mod tea5761 videobuf_vmalloc irqk snd tea5767 vpfe_capture kernel snd_pcm ths7303 xc5000 root@dm368-evm:/sys/module#
在Linux shell中执行mount命令,通常可以看到某个做了文件系统的磁盘分区或flash分区或内存文件系统做为所谓的根文件系统被mount到了挂载点/处。
转载:http://blog.csdn.net/olei_oleitao/article/details/7919307
bootloader 是什么?如果你看到了这篇文章,肯定已经知道答案了,所以这里就不赘述了。这篇文章主要是根据韦东山老师的视频,从零开始写一个最简单的 bootloader,每一行代码都是手动输入。虽然直接看一遍视频,也能够理解其中的步骤或者原理,但是根据视频敲一遍之后,印象才是最深刻的。
类似于Windows下的C、D、E等各个盘,Linux系统也可以将磁盘、Flash等存储设备划分为若干个分区,在不同分区存放不同类别的文件。与Windows的C盘类似,Linux一样要在一个分区上存放系统启动所必需的文件,比如内核映象文件(在嵌入式系统中,内核一般单独存放在一个分区中)、内核启动后运行的第一个程序(init)、给用户提供操作界面的shell程序、应用程序所依赖的库等。这些必需的、基本的文件,合称为根文件系统,它们存放在一个分区中。Linux系统启动后首先挂接这个分区──称为挂接(mount)根文件系统。其他分区上所有目录、文件的集合,也称为文件系统,比如我们常说:“挂接硬盘第二个分区”、“挂接硬盘第二个分区上的文件系统”。
首先,uboot会去校验(CRC)存放环境变量的一段空间 ,若CRC有效则使用该空间里的环境变量,无效则用默认的环境变量. 而我们移植的uboot,由于一直没有使用save,所以没有读不出CRC校验,使用的默认环境变量,如下图所示:
编译器:友善之臂mini2440光盘自带arm-linux-gcc 4.4.3
转载请注明文章地址 http://wiki.100ask.org/Linux_devicetree
centos系统内核如何升级,有些小伙伴在使用centos系统时可能会遇到网卡不能使用,亮度不能调节,触摸板不能识别,等等问题,这些都是内核版本过低而导致,只需要把内核升级一下就可以, 下面为大家分享一下centos系统内核升级方法。
我们在Linux中使用自带的gcc和g++编译器进行编译的程序是针对X86架构的。而我们开发板大多都是ARM或者其他架构的开发板,我们就需要编译出针对其他架构的程序。
arm-none-linux-gnueabi-gcc是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。使用时,按照主机平台,可以下载以下任一版本中的一个,结果是一样的:
本文是为那些没有接触过Linux系统的人写的。了解Linux系统对于一个技术来人员可谓是必须的(即便不是和计算机直接相关的),而对于广大普通用户而言,只了解Windows虽然已经足够,不过来了解一下Linux这个系统我想还是有益处的(虽然很难立马显现)。 下面我就用一问一答的简单形式带大家初步了解Linux是什么: Q:用一句话概括Linux? A : linux是一个操作系统,就和windows一样。 要了解linux,请先了解开放源代码运动。这是由理查德·斯托曼先生在上世纪80年代发起的一项运动。其主要
本文是为那些没有接触过Linux系统的人写的。了解Linux系统对于一个技术来人员可谓是必须的(即便不是和计算机直接相关的),而对于广大普通用户而言,只了解Windows虽然已经足够,不过来了解一下Linux这个系统我想还是有益处的(虽然很难立马显现)。
状态为 deinstall 即已经卸载,如果觉得看着不舒服的话可以使用 purge 连配置文件里一起彻底删除,清理内核列表
Linux服务(Linux services)对于每个应用Linux的用户来说都很重要。关闭不需要的服务,可以让Linux运行的更高效,但并不是所有的Linux服务都可以关闭。今天安装了一次CentOs Linux,发现Linux启动的时候启动了好多服务,大部分都不知道是干什么的。因此着重了解了一下那些Linux服务(Linux services)可以关闭,那些Linux服务(Linux services)不能随意关闭。 在关闭Linux服务之前,需要了解一些概念: 什么是Linux服务/后台进程(Linu
Oracle 11g RAC中,发现oc4j以及gsd服务都处于offline状态,这是Oracle 11g RAC默认情形。即便如此,并不影响数据库的使用,因为 oc4j 是用于WLM 的一个资源, WLM在 11.2.0.2 才可用。GSD则是用于支持dbca,srvctl,oem等的交互工具。本文描述将这两个服务切换到online。
当Linux在1991年8月25日诞生时,它不过是当时21岁的Linus Torvalds的一个爱好。今天,Linux社区估计有超过8600万的强大用户。
领取专属 10元无门槛券
手把手带您无忧上云