----------------------------------------------------------------------
インターフェース2014年8月号
Cortex-M3搭載FM3マイコンで汎用軽量OS uClinuxを試す

IF1408L
Interface編集部
CQ出版(株) 

公開：2014年6月26日
----------------------------------------------------------------------
====================================
ダウンロード・サービスご利用者各位
====================================
　ご愛読を賜り，誠にありがとうございます．
　このたびはダウンロード・サービスをご利用いただき，誠にありがとうございます．
　筆者のご厚意により，本記事の関連データをこのアーカイブに収録しました．

================
概要
================
　このアーカイブには，表題の記事の中で作成したプログラム・ファイルとデータ・ファイルが収録されています．
　詳しくは該当記事を参照してください．
　アーカイブは，ZIP形式によって圧縮されています．

[ダウンロードファイル]
- fm3_uclinux_20140622.zip
emcraft社のuClinux公開ファイルからの差分ファイルです。
記事を参考に、公開ファイル(https://github.com/EmcraftSystems/linux-emcraft)をダウンロード、解凍後、この差分zipファイルを解凍、上書きしてください。
ビルド方法は記事を参考にしてください。

[GitHubから直接クローンする]
- FM3向けの変更、追加ファイルを含めたuClinuxのソースファイルを下記GitHubにも公開しました。ダウンロードファイル中の差分を使用しないで、gitでクローンすることで、ソースファイルを準備できます。
https://github.com/fm3fan/uClinux

[ビルド環境]
- ubuntu 12.04およびubuntu 14.04を使用しました。
- gccは、Mentor Graphics社から無償提供されている、arm-uclinuxeabi版を使用しました。
http://www.codesourcery.com/sgpp/lite/arm/portal/package6503/public/arm-uclinuxeabi/arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2

[ビルド手順]
- ビルドする場合には、インストールしたgccのpathを設定し、CROSS_COMPILE環境変数を適切に設定してください。

$ export PATH=~/arm-2010q1/bin:$PATH
$ export CROSS_COMPILE=arm-uclinuxeabi-
$ export LANG=C


$ make distclean

$ cp release/20140612/lfcq1/usb/initramfs_lfcq1_usb.txt initramfs_lfcq1_usb.txt
$ cp release/20140612/lfcq1/min/config_lfcq1_usb .config

$ make menuconfig (必要に応じオプションを変更します。)

$ make uImage

uImage ファイルが、arch/arm/bootフォルダに作成されます。

[実行]
- FM3用のu-bootを使用して、tftpサーバー経由またはシリアル経由で、FM3マイコンにダウンロードします。

FM3> tftpboot uImage
FM3> bootm

[ビルド済uImageファイル]
- 最小版
  fm3_uclinux_20140622\release\20140612\lfcq1\min\uImage
- USB,ネットワーク版
  fm3_uclinux_20140622\release\20140612\lfcq1\usb\uImage
- NFSブートをする場合には、カーネルパラメータを変更し、ビルドした上で、別途ルートシステムを準備する必要があります。

[ブートメッセージ例]

U-Boot 2010.03-00000-gb909fc8-dirty (Jun 11 2014 - 22:08:41)

CPU  : Fujitsu FM3 series (Cortex-M3)
Board: CQ_FRK_FM3 + LFCQ1 Rev Rev 0.1, Kentaro Sekimoto
DRAM:   4 MB
Flash:  1 MB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   fm3_eth
FM3> tftpboot uImage
PHY: Find OK id=10
PHY: ReadID OK 0015
PHY: ReadID OK f450
Waiting for auto negotiation...
PHY: AutoNegotiate OK
LinkSpeed: Full Duplex
LinkSpeed: 100Mbs
Using fm3_eth device
TFTP from server 192.168.1.2; our IP address is 192.168.1.160
Filename 'uImage'.
Load address: 0x62000000
Loading: #################################################################
         ###############################################
done
Bytes transferred = 1629536 (18dd60 hex)

FM3> bootm
## Booting kernel from Legacy Image at 62000000 ...
   Image Name:   Linux-2.6.33-arm1
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1629472 Bytes =  1.6 MB
   Load Address: 62008000
   Entry Point:  62008001
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Linux version 2.6.33-arm1 (ksekimoto@ub120432) (gcc version 4.4.1 (Sourcery G++ Lite 2010q1-189) ) #2 Thu Jun 12 23:05:04 JST 2014
CPU: ARMv7-M Processor [412fc231] revision 1 (ARMv7M)
CPU: NO data cache, NO instruction cache
Machine: Fujitsu FM3
Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 1016
Kernel command line: console=ttyS0,115200 panic=10 earyprintk
PID hash table entries: 16 (order: -6, 64 bytes)
Dentry cache hash table entries: 1024 (order: 0, 4096 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 4MB = 4MB total
Memory: 2372k/2372k available, 1724k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0x00000000 - 0x00001000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    vmalloc : 0x00000000 - 0xffffffff   (4095 MB)
    lowmem  : 0x62000000 - 0x62400000   (   4 MB)
    modules : 0x62000000 - 0x62400000   (   4 MB)
      .init : 0x62008000 - 0x62058000   ( 320 kB)
      .text : 0x62058000 - 0x6217e000   (1176 kB)
      .data : 0x6217e000 - 0x62195d20   (  96 kB)
NR_IRQS:53
Calibrating delay loop... 13.87 BogoMIPS (lpj=69376)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
bio: create slab <bio-0> at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Switching to clocksource cm3-systick
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 512 (order: 0, 4096 bytes)
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
TCP: Hash tables configured (established 512 bind 512)
TCP reno registered
NET: Registered protocol family 1
alg: No test for stdrng (krng)
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
fm3_uart.0: ttyS0 at MMIO 0x40038000 (irq = 7) is a FM3 UART Port
console [ttyS0] enabled
fm3_spi fm3_spi.1: SPI Controller 1-2 at 0x40038100 no irq
fm3_eth: found MAC at 0x40064000, irq 32
fm3_mii_bus: probed
found PHY id 0x15f450 addr 16
eth0: using MII interface
Waiting for auto negotiation...
PHY: AutoNegotiate OK
LinkSpeed: Full Duplex
LinkSpeed: 100Mbs
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=00:10, irq=-1)
fm3_usb: driver fm3_usb, 29 Aprl 2014
FULL SPEED detected
fm3_usb fm3_usb.0: USB Host Controller
fm3_usb fm3_usb.0: new USB bus registered, assigned bus number 1
fm3_usb fm3_usb.0: irq 37, io mem 0x00000000
FULL SPEED detected
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
i2c /dev entries driver
I2C Controller i2c-1 ch1_0 clk=100Khz at 0x40038100 irq=9-10
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
TCP cubic registered
Freeing init memory: 320K
init started: BusyBox v1.21.1 (2014-01-05 15:50:58 JST)
usb 1-1: new full speed USB device using fm3_usb and address 2
Mounting proc
Mounting sysfs
Mounting devpts
scsi0 : usb-storage 1-1:1.0
Setting hostname to uclinux
hostname: applet not found
Bringing up loopback device
route: applet not found
Bringing up Eth0
ifconfig eth0 hw ether 00:11:22:33:44:55
ifconfig eth0 192.168.1.100 netmask 255.255.255.0
ethaddr=00:11:22:33:44:55
ifconfig eth0 up
done!
Welcome to
          ____ _  _
         /  __| ||_|
    _   _| |  | | _ ____  _   _  _  _
   | | | | |  | || |  _ \| | | |\ \/ /
   | |_| | |__| || | | | | |_| |/    \
   |  ___\____|_||_|_| |_|\____|\_/\_/
   | |
   |_|

Fujitsu FM3/FM4 port.
For further information check:
http://www.uclinux.org/



BusyBox v1.21.1 (2014-01-05 15:33:24 JST) hush - the humble shell

/ # scsi 0:0:0:0: Direct-Access     USB 2.0  USB Flash Drive  1.00 PQ: 0 ANSI: 2
sd 0:0:0:0: Attached scsi generic sg0 type 0
sd 0:0:0:0: [sda] 3964928 512-byte logical blocks: (2.03 GB/1.89 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] Assuming drive cache: write through
 sda: sda1
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] Attached SCSI removable disk

/ # ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: seq=0 ttl=128 time=127.425 ms
64 bytes from 192.168.1.2: seq=1 ttl=128 time=4.000 ms
64 bytes from 192.168.1.2: seq=2 ttl=128 time=3.879 ms
64 bytes from 192.168.1.2: seq=3 ttl=128 time=3.984 ms
64 bytes from 192.168.1.2: seq=4 ttl=128 time=3.998 ms
64 bytes from 192.168.1.2: seq=5 ttl=128 time=3.985 ms
64 bytes from 192.168.1.2: seq=6 ttl=128 time=3.987 ms
64 bytes from 192.168.1.2: seq=7 ttl=128 time=3.879 ms
^C
--- 192.168.1.2 ping statistics ---
8 packets transmitted, 8 packets received, 0% packet loss
round-trip min/avg/max = 3.879/19.392/127.425 ms
/ #

================
動作確認
================
　プログラムは筆者の元で動作を確認済みです．

=================
アーカイブの内容
=================
■Cortex-M3搭載FM3マイコンで汎用軽量OS uClinuxを試す
関連データ
===========
著作権
=============
　収録したプログラム，データおよびドキュメントなどの著作権は，各著作権者（すなわち筆者）にあります．
　Copyright (C) 2014  Kentarou Sekimoto

============
免責
============
(1)プログラムやデータの使用により，使用者に損失が生じたとしても，著作権者とCQ出版(株)は，その責任を負いません．

(2)プログラムやデータにバグや欠陥があったとしても，著作権者とCQ出版(株)は，修正や改良の義務を負いません．

--------------------------- 以上 ---------------------------------
