Linux 3.3.0移植到S3C6410开发板上之一

发布者:EtherealGrace最新更新时间:2024-09-19 来源: cnblogs关键字:Linux  移植  S3C6410开发板 手机看文章 扫描二维码
随时随地手机看文章

这里仅仅是移植成功内核,可以挂载文件系统运行,至于驱动会陆续添加。


第一步:到内核官网上下载最新的内核,我下载的是linux-3.3-rc3.tar.bz2。


第二步:解压内核,进入arch/arm/mach-s3c64xx目录下,看到不少6410的板级文件,我们这里选择mini6410开开展工作,在目录下将mach-mini6410.c文件复制一份,命名为:mach-jfj6410.c。这里我们将文件里面关于mini6410的字样都修改为jfj6410.但是这里要注意,MACHINE_START(JFJ6410, 'JFJ6410')这里的JFJ6410要使用大写,稍候说明为什么。大家都知道在一个目录下添加了文件后,都应该修改当前目录下的Kconfig和Makefile两个文件,这是Linux系统编译的要求。至于怎么修改,仔细看一下文件内容我相信大家都知道。


Kconfig文件是进行make menuconfig时出现的配置选项,这里我们添加了自己的板级文件肯定要添加配置选项。内容可以复制MINI6410的。如下:           


config MACH_JFJ6410

bool 'JFJ6410'

select CPU_S3C6410

select S3C_DEV_HSMMC

select S3C_DEV_HSMMC1

select S3C64XX_SETUP_SDHCI

select S3C_DEV_USB_HOST

select S3C_DEV_NAND

select S3C_DEV_FB

select S3C64XX_SETUP_FB_24BPP

select SAMSUNG_DEV_ADC

select SAMSUNG_DEV_TS

help

  Machine support for the JFJKJ JFJ6410

           这里你应该能够看出之前为什么要在那个地方单独使用大写了吧,就是为了保持一致。

          Makefile文件就是说明要编译的文件,以及编译的规则,这里显然就是要编译我们自己的板级文件mach-jfj6410.c,具体如下:


obj-$(CONFIG_MACH_JFJ6410) += mach-jfj6410.o

        第三步:配置内核,make menuconfig。这里我是使用内核自带的s3c6400_defconfig文件进行修改的,这样比较简单,呵呵。基本去掉了大部分的驱动,留下了串口驱动和NAND驱动。

       第四步:编译make zImage。呵呵,这样就生成了我们需要的内核。


       第五步:烧写,测试内核。因为我们是测试内核,所以U-Boot以及根文件系统都是使用之前的,这里没有移植yaffs,所以我目前使用cramfs格式的文件系统。


       启动开发板后出现了如下的错误:


end_request: I/O error, dev mtdblock2, sector 0

FAT: unable to read boot sector

VFS: Cannot open root device 'mtdblock2' or unknown-block(31,2)

Please append a correct 'root=' boot option; here are the available partitions:

1f00        192 mtdblock0 (driver?)

1f01       1856 mtdblock1 (driver?)

1f02      30720 mtdblock2 (driver?)

1f03      32768 mtdblock3 (driver?)

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)

       后来上网查了很久才发现是驱动的问题。U-boot使用软件ECC,我们在配置NAND驱动的时候提示是否选择使用NAND硬件ECC,我试了一下,无论你选不选都出现这个问题,我才发现,它的配置包含三重含义,选中--->使用硬件ECC;不选--->使用NAND的软件ECC(和U-Boot的软件ECC不是一回事);而我们这里需要的是不使用NAND的ECC,也就是禁止,不然就会和U-Boot冲突,出现上面的错误。要禁止NAND的ECC,我们修改drivers/mtd/nand/s3c2410.c这个文件,在845行的地方。

      源代码为:                      


chip->ecc.mode = NAND_ECC_SOFT;

      修改为:

chip->ecc.mode = NAND_ECC_NONE;

      这就是当我们不选中的时候,不是使用NAND的软件ECC,而是不使用NAND的ECC。

      再次编译内核,烧写后正常运行,打印的信息如下:


Starting kernel ...


Uncompressing Linux... done, booting the kernel.

Booting Linux on physical CPU 0

Linux version 3.3.0-rc3 (chenlong12580@chenlong12580) (gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) ) #4 Mon Feb 13 14:58:00 CST 2012

CPU: ARMv6-compatible processor [410fb766] revision 6 (ARMv7), cr=00c5387d

CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache

Machine: JFJ6410

Memory policy: ECC disabled, Data cache writeback

CPU S3C6410 (id 0x36410101)

S3C24XX Clocks, Copyright 2004 Simtec Electronics

camera: no parent clock specified

S3C64XX: PLL settings, A=532000000, M=532000000, E=24000000

S3C64XX: HCLK2=266000000, HCLK=133000000, PCLK=66500000

mout_apll: source is fout_apll (1), rate is 532000000

mout_epll: source is epll (1), rate is 24000000

mout_mpll: source is mpll (1), rate is 532000000

usb-bus-host: source is clk_48m (0), rate is 48000000

audio-bus: source is mout_epll (0), rate is 24000000

audio-bus: source is mout_epll (0), rate is 24000000

audio-bus: source is mout_epll (0), rate is 24000000

irda-bus: source is mout_epll (0), rate is 24000000

camera: no parent clock specified

CPU: found DTCM0 8k @ 00000000, not enabled

CPU: moved DTCM0 8k to fffe8000, enabled

CPU: found DTCM1 8k @ 00000000, not enabled

CPU: moved DTCM1 8k to fffea000, enabled

CPU: found ITCM0 8k @ 00000000, not enabled

CPU: moved ITCM0 8k to fffe0000, enabled

CPU: found ITCM1 8k @ 00000000, not enabled

CPU: moved ITCM1 8k to fffe2000, enabled

Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024

Kernel command line: root=/dev/mtdblock2 rootfstype=cramfs console=ttySAC0,115200

PID hash table entries: 1024 (order: 0, 4096 bytes)

Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)

Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)

Memory: 256MB = 256MB total

Memory: 257500k/257500k available, 4644k reserved, 0K highmem

Virtual kernel memory layout:

    vector  : 0xffff0000 - 0xffff1000   (   4 kB)

    DTCM    : 0xfffe8000 - 0xfffec000   (  16 kB)

    ITCM    : 0xfffe0000 - 0xfffe4000   (  16 kB)

    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)

    vmalloc : 0xd0800000 - 0xff000000   ( 744 MB)

    lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)

    modules : 0xbf000000 - 0xc0000000   (  16 MB)

      .text : 0xc0008000 - 0xc01d90b8   (1861 kB)

      .init : 0xc01da000 - 0xc01f5000   ( 108 kB)

      .data : 0xc01f6000 - 0xc0216a40   ( 131 kB)

       .bss : 0xc0217024 - 0xc0246c58   ( 192 kB)

SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1

NR_IRQS:246

VIC @f6000000: id 0x00041192, vendor 0x41

VIC @f6010000: id 0x00041192, vendor 0x41

Console: colour dummy device 80x30

Calibrating delay loop... 528.79 BogoMIPS (lpj=2643968)

pid_max: default: 32768 minimum: 301

Mount-cache hash table entries: 512

CPU: Testing write buffer coherency: ok

Setting up static identity map for 0x5015e320 - 0x5015e37c

gpiochip_add: registered GPIOs 38 to 53 on device: GPF

gpiochip_add: registered GPIOs 74 to 89 on device: GPI

gpiochip_add: registered GPIOs 91 to 102 on device: GPJ

gpiochip_add: registered GPIOs 161 to 176 on device: GPO

gpiochip_add: registered GPIOs 178 to 192 on device: GPP

gpiochip_add: registered GPIOs 194 to 202 on device: GPQ

gpiochip_add: registered GPIOs 144 to 159 on device: GPN

gpiochip_add: registered GPIOs 0 to 7 on device: GPA

gpiochip_add: registered GPIOs 9 to 15 on device: GPB

gpiochip_add: registered GPIOs 17 to 24 on device: GPC

gpiochip_add: registered GPIOs 26 to 30 on device: GPD

gpiochip_add: registered GPIOs 32 to 36 on device: GPE

gpiochip_add: registered GPIOs 55 to 61 on device: GPG

gpiochip_add: registered GPIOs 137 to 142 on device: GPM

gpiochip_add: registered GPIOs 63 to 72 on device: GPH

gpiochip_add: registered GPIOs 104 to 119 on device: GPK

gpiochip_add: registered GPIOs 121 to 135 on device: GPL

jfj6410: Option string jfj6410=0

jfj6410: selected LCD display is 480x272

S3C6410: Initialising architecture

bio: create slab at 0

io scheduler noop registered

io scheduler deadline registered

io scheduler cfq registered (default)

start plist test

end plist test

Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled

s3c6400-uart.0: ttySAC0 at MMIO 0x7f005000 (irq = 69) is a S3C6400/10

console [ttySAC0] enabled

s3c6400-uart.1: ttySAC1 at MMIO 0x7f005400 (irq = 70) is a S3C6400/10

s3c6400-uart.2: ttySAC2 at MMIO 0x7f005800 (irq = 71) is a S3C6400/10

s3c6400-uart.3: ttySAC3 at MMIO 0x7f005c00 (irq = 72) is a S3C6400/10

brd: module loaded

loop: module loaded

S3C24XX NAND Driver, (c) 2004 Simtec Electronics

s3c24xx-nand s3c6400-nand: Tacls=4, 30ns Twrph0=8 60ns, Twrph1=6 45ns

s3c24xx-nand s3c6400-nand: System booted from NAND

s3c24xx-nand s3c6400-nand: NAND ECC disabled

NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)

NAND_ECC_NONE selected by board driver. This is not recommended!

Scanning device for bad blocks

Bad eraseblock 1050 at 0x000008340000

Bad eraseblock 1076 at 0x000008680000

Bad eraseblock 1211 at 0x000009760000

Bad eraseblock 1949 at 0x00000f3a0000

Creating 4 MTD partitions on 'nand':

0x000000000000-0x000000100000 : 'Bootloader'

0x000000100000-0x000000600000 : 'Kernel'

0x000000600000-0x000007e00000 : 'User'

0x000007e00000-0x000010000000 : 'File System'

mousedev: PS/2 mouse device common for all mice

VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5

VFS: Mounted root (cramfs filesystem) readonly on device 31:2.

Freeing init memory: 108K

mount: mounting none on /proc/bus/usb failed: No such file or directory

hwclock: can't open '/dev/misc/rtc': No such file or directory

depmod: chdir(3.3.0-rc3): No such file or directory

[01/Jan/1970:00:00:07 +0000] boa.c:173 - unable to create socket: Function not implemented

                        

open device leds: No such file or directory

/usr/sbin/alsactl: load_state:1610: No soundcards found...

                        

ifconfig: socket: Function not implemented

Try to bring eth0 interface up......cat: can't open '/sys/class/net/eth0/address': No such file or directory

ifconfig: socket: Function not implemented

route: socket: Function not implemented

/etc/init.d/ifconfig-eth0: line 6: can't create /etc/resolv.conf: Read-only file system

Done


Please press Enter to activate this console. 

[root@JFJ6410 /]# ls

bin      etc      lib      mnt      proc     sbin     tmp      var

dev      home     linuxrc  opt      root     sys      usr      www

[root@JFJ6410 /]# 


关键字:Linux  移植  S3C6410开发板 引用地址:Linux 3.3.0移植到S3C6410开发板上之一

上一篇:S3C6410串口平台设备注册流程分析
下一篇:搭建S3C6410开发板的测试环境

推荐阅读最新更新时间:2024-11-11 11:53

嵌入式Linux下的视频监控解决方案
在嵌入式工控板上接一个摄像头进行视频监控,看起来比较容易实现,但是往往是 理想很丰满、现实很骨感 历经千辛万苦效果却不是很理想,本文就给大家介绍各种解决方案。 这里给大家介绍的是既对外设有需求,又要连接摄像头的方案,比如既要有CAN总线、多路串口、SPI、LVDS等,又要有摄像头。这种需求在行车监控、驾培系统、医疗、机房监控等行业是比较常见的。如果对外设没啥要求的,只追求高清视频监控,出门左拐华为的Hi3518的方案更适合你。视频监控一般有两种方案:MCU自带摄像头接口、外扩摄像头接口。外扩摄像头又分为:USB方案、以太网方案、串口方案等。 在早期要做视频监控的比较通用的方法是选用X86架构的核心板,直接跑ubuntu系统安装US
[嵌入式]
嵌入式<font color='red'>Linux</font>下的视频监控解决方案
漫步者Lolli3 ANC真无线降噪耳机拆解分析
Lollipods系列是漫步者旗下非常畅销的TWS耳机产品之一,以出色的性能和高性价比体验,获得了巨大的销量。漫步者Lolli3 ANC是该系列的新一代产品,同时也是漫步者旗下首款半入耳式真无线降噪耳机。在外观上,Lolli3 ANC延续了Lolli 3的第3代半入耳佩戴结构,提供舒适通透的佩戴体验。 在功能配置方面,搭载AI多模态自适应系统,包括自适应ANC+自适应ENC+自适应EQ,实现降噪、通话、音效三重自适应。自适应降噪通过耳道检测技术智能识别每一次佩戴的耳部结构和佩戴状态,自动生成符合当前状态的降噪参数,从而实现了更优的半入耳式的降噪效果;自适应通话降噪通过内置的三麦克风系统,搭配AI算法,精准分离环境噪音并智能消
[嵌入式]
漫步者Lolli<font color='red'>3</font> ANC真无线降噪耳机拆解分析
TQ2440 学习笔记—— 27、移植U-Boot【Bootloader 作用、工作流程】
一、Bootloader 简介 1、系统上电之后,需要一段程序来进行初始化:关闭WATCHDOG、改变系统时钟、初始化存储控制寄存器、将更多的代码复制到内存中等。如果它能将操作系统内核复制到内存中运行,无论从本地(比如Flash)还是从远端(比如通过网络),就称这段程序为Bootloader 。 简单的说,Bootloader 就是这么一段小程序,它在系统上电时开始执行,初始化硬件设备、准备好软件环境,最后调用操作系统内核。 2、Bootloader 的启动方式 CPU 上电后,会从某个地址开始执行。比如MIPS 结构的CPU 会从0xBFC00000取第一条指令,而ARM 结构的CPU则从地址 0x0000000
[单片机]
TQ2440 学习笔记—— 27、<font color='red'>移植</font>U-Boot【Bootloader 作用、工作流程】
Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解
安装前的絮叨 首先简单介绍一下,所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。 交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问题。例如,编译内核时需要使用arm
[单片机]
Ubuntu 12.04嵌入式交叉编译环境arm-<font color='red'>linux</font>-gcc搭建过程图解
苹果iPhone X亮相:无边框OLED、Face ID、移除Home键 11/3日出货
备受期待的苹果(Apple) 10周年版iPhone正式登场。iPhone X配备无边框OLED萤幕,萤幕上方的凹槽容纳前置镜头和新的脸部辨识感测器,并支援无线充电功能。   根据The Verge报导,5.8吋的iPhone X前、后方都采用玻璃材质,两侧以外科手术级的不锈钢加固,有太空灰和银色两种颜色,具防水功能。   iPhone X的OLED萤幕为像素密度达458ppi的超级视网膜(Super Retina)萤幕,解析度达2436 x 1125,而且跟iPhone 8一样具有True Tone显示技术。   苹果在iPhone X上首次移除Home按钮,由从萤幕底部向上滑动的动作取代。 iPhone X还以Face ID取
[手机便携]
移植u-boot-2010.09到S3C2440(五)—— 通过OPENJTAG、OPENOCD、ECLIPSE进行调试
OPENJTAG是买的百问网的,坑爹啊,180大洋,贵。这里说一句,OPENJTAG不是百问网的独家正版,这个东西是开源的,百问网说这东西是他自己的,说别人是盗版的,这个嘿嘿。。。。就算别人是根据他的做出来的,做人要谦虚啊。有句话说的好,要做就不要怕别人模仿。话说,好像国内很多个人都做过OPENJTAG。而且,他这个东西里面的插件都是别人的。给的网址都过期N年了。。。当然我自己是做不出来的。 它家的这个硬件性能,极其慢,必须等S3C2440运行一小段时间,稳定了,再连openocd才能连接的上硬件,还有好像是这个usb转串口做的也一般,输入存在丢失。一会的少一堆输入。 不得不说,现在最便宜的在linux下调试的硬件设备,我
[单片机]
起底3D结构光供应链,小米8的Face ID与iPhone X差别在哪?
集微网消息 (记者/邓文标),尽管iPhone X的刘海设计备受吐槽,但Face ID的功能无疑再次引领了智能手机潮流。目前国产手机厂商华为、OPPO、VIVO等正在集体跟进苹果的Face ID技术,小米则首发了小米8探索版支持Face ID,同样内置3D传感器元件,但与iPhone X的Face ID存在差异。 苹果iPhone X是全球手机品牌中第一个使用3D散斑结构光用于人脸识别以及支付的智能手机,该技术源自2013年苹果公司以3.45亿美金在以色列全资收购的Prime Sense公司,在iPhone X中首次将3D结构光用于人脸识别和支付后,这项技术就备受关注。 5月31日,小米正式发布小米8探索版,采用了Face ID,
[手机便携]
3.MMU的配置和使用
前面的基础知识中使用了物理地址来点亮LED灯的,现在,学习了MMU的有关知识,下面就是利用MMU的知识,用虚拟地址来点亮LED灯。而且前面还关闭了MMU所以接下来要使用MMU就得打开MMU。 在前面的学习知道,从虚拟地址映射成物理地址有三种方式的: 段的方式 粗页的方式 细页的方式 接下来就是使用段的映射方式来实现虚拟地址到物理地址的转化。 段的方式的实现步骤: 1、建立一张Translation table: 可以看到段的方式的表的信息。 2、建立了这张表之后,还要把这张表的基地址TTB(Translation Table Base)写到CP15的c2寄存器里,这样MMU才能找得到这张表。 3、就是打开M
[单片机]
<font color='red'>3</font>.MMU的配置和使用
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved