| |
Version 145, changed by hippo5329@yahoo.com.tw. 01/29/2008. Show version history
(This is different from the older buildroot guide approach. DO NOT MIX UP)
First, you should (recommended for newbie) install the BinaryToolchain
(Or you can build the cross compiler from sources with BuildrootGuide , but it might be difficult for beginner)
Install required package, as root or via sudo
On Fedora,RHEL,
yum install gcc make ncurses-devel bison flex gawk lynx
On Debian/Ubuntu, (via sudo)
apt-get install gcc make ncurses-dev bison flex gawk lynx
As root, check if you have "cc" which is a symlink to "gcc" ?
which gcc
gcc -v
which cc
cc -v
if not,
cd /usr/bin
ln -s gcc cc
Select the target: Altera, nios2nommu
NOTE, Libc MUST be (None) !!! Because we will use the uClibc built in the cross gcc with buildroot. We don't use the uClibc come with uClinux-dist.
Vendor/Product Selection --->
--- Select the Vendor you wish to target
(Altera) Vendor
--- Select the Product you wish to target
(nios2nommu) Altera Products
Kernel/Library/Defaults Selection --->
(linux-2.6.x) Kernel Version
(None) Libc Version # MUST be None !!!
[*] Default all settings (lose changes)
[ ] Customize Kernel Settings
[ ] Customize Vendor/User Settings
[ ] Update Default Vendor Settings
Then <exit> <exit> <yes>
DO NOT change any other setting until first successful boot.
Run vendor_hwselect to setup the memory and io port address map of your Nios II board (see LinuxHwselect for details) .
(still in uClinux-dist dir, DO NOT cd linux-2.6.x)
make vendor_hwselect SYSPTF=/path_to_your_hardware_project/your_system.ptf # you must give the path to ptf, no space allowed in path
Compile kernel and apps,
make
If you meet errors, you can use "NON_SMP_BUILD=1 make", which avoids parallel make. The messages will be cleaner.
The compressed kernel is now the images/zImage file of ELF format. You can follow TryOutuClinux to run the new zImage .
Using make vendor_hwselect SYSPTF=~/donwload/system_0.ptf . The zImge, ptf and sof are attached in TryOutuClinux .
Still in uClinux-dist dir, DO NOT cd linux-2.6.x
make menuconfig
Kernel/Library/Defaults Selection --->
(linux-2.6.x) Kernel Version
(None) Libc Version
[ ] Default all settings (lose changes)
[*] Customize Kernel Settings <== to change kernel config
[*] Customize Vendor/User Settings <== to change user apps config
[ ] Update Default Vendor Settings
Then <exit> <exit> <yes> .
It will enter kernel config first, then it will enter user apps config, you can select more apps.
After you change config,
make
Here is more usage about uClinux,
/>ifconfig eth0 192.168.1.85 # staic ip
/> route add default gw 192.168.1.254 # gateway
/> ifconfig
eth0 Link encap:Ethernet HWaddr 00:07:ED:00:00:00
inet addr:192.168.1.85 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 :0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2260 (2.2 KiB) TX bytes:2854 (2.7 KiB)
Interrupt:8
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 :0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
/> inetd & # start inetd to invoke telnetd and ftpd services
[22]
/> boa & # start httpd with cgi-demo
[23]
/> netstat -a # show network services
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:http *:* LISTEN
tcp 0 0 *:ftp *:* LISTEN
tcp 0 0 *:telnet *:* LISTEN
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
/> free
MemTotal: 6520 kB
MemFree: 4340 kB
Buffers: 0 kB
/> ps
PID PORT STAT SIZE SHARED %CPU COMMAND
1 S 147K 0K 2.8 /init
2 S 0K 0K 0.0 ksoftirqd/0
3 S 0K 0K 0.0 events/0
4 S 0K 0K 0.0 khelper
5 S 0K 0K 0.0 kthread
6 S 0K 0K 0.0 kblockd/0
7 S 0K 0K 0.0 pdflush
8 S 0K 0K 0.0 pdflush
9 S 0K 0K 0.0 kswapd0
10 S 0K 0K 0.0 aio/0
17 R 147K 0K 0.3 -/bin/sh
19 S 147K 0K 0.2 dhcpcd
22 S 95K 0K 0.1 inetd
23 S 275K 0K 0.4 boa
/>
ftpd usage, user : ftp, password: <anything> , dir : /home/ftp
boa and cgi usage, dir : /home/httpd
You can check what is in busybox, by running "busybox" on uClinux.
You can check what is in sash, by "help" .
We use initramfs instead of the default romfs . The initramfs is generated from romfs dir and the dev file in vendors/Altera/nios2nommu/romfs_list . See InitramfsUpdate .
The simplified "init" program will run etc/rc and etc/inittab during startup.
If you want to customize startup, eg inet servers and eth config, you should update the files vendors/Altera/nios2nommu/ rc and inittab.
We arrange to minimize the memory usage. We use sash as default shell, it is smaller than busybox and take less memory. We include some standalone networking servers, such as inetd and telnetd. We build some networking utility into busybox, such as ifconfig,route,netstat,telnet,wget..etc. We don't use sh in busybox, and don't use servers in busybox as it takes a lot of memory.
You may use the simple history in sash. Use "h" to list history. Use "!<d>" , d=1..20, to recall one of the history, eg "!3" for the 3rd cmd line.