浏览代码

beaglebone uenv parameters

Bob Mottram 7 年前
父节点
当前提交
68777f0059
共有 1 个文件被更改,包括 143 次插入1 次删除
  1. 143
    1
      src/freedombone-image-hardware-setup

+ 143
- 1
src/freedombone-image-hardware-setup 查看文件

@@ -31,7 +31,14 @@ PROJECT_NAME='freedombone'
31 31
 export TEXTDOMAIN=${PROJECT_NAME}-image-hardware-setup
32 32
 export TEXTDOMAINDIR="/usr/share/locale"
33 33
 
34
-setup_flash_kernel() {
34
+function enable_serial_console {
35
+    # By default, spawn a console on the serial port
36
+    device="$1"
37
+    echo $"Adding a getty on the serial port"
38
+    echo "T0:12345:respawn:/sbin/getty -L $device 115200 vt100" >> /etc/inittab
39
+}
40
+
41
+function setup_flash_kernel {
35 42
     if [ ! -d /etc/flash-kernel ] ; then
36 43
        mkdir /etc/flash-kernel
37 44
     fi
@@ -49,29 +56,164 @@ setup_flash_kernel() {
49 56
     apt-get -yq install flash-kernel
50 57
 }
51 58
 
59
+function a20_env {
60
+    dtb="$1"
61
+
62
+    # Setup boot.cmd
63
+    if grep -q btrfs /etc/fstab ; then
64
+        fstype=btrfs
65
+    else
66
+        fstype=ext4
67
+    if [ -n "$command_line" ] ; then
68
+        echo flash-kernel flash-kernel/linux_cmdline string "$command_line" | debconf-set-selections
69
+    fi
70
+    kernelVersion=$(ls /usr/lib/*/$dtb | head -1 | cut -d/ -f4)
71
+    version=$(echo $kernelVersion | sed 's/linux-image-\(.*\)/\1/')
72
+    initRd=initrd.img-$version
73
+    vmlinuz=vmlinuz-$version
74
+
75
+    # Create boot.cmd
76
+    cat >> /boot/boot.cmd <<EOF
77
+setenv mmcdev 0
78
+setenv mmcpart 1
79
+
80
+setenv mmcroot /dev/mmcblk0p2 ro
81
+setenv mmcrootfstype $fstype rootwait fixrtc
82
+setenv mmcrootflags subvol=@
83
+
84
+setenv console ttyS0,115200n8
85
+
86
+setenv kernel_file $vmlinuz
87
+setenv initrd_file $initRd
88
+setenv fdtfile $dtb
89
+
90
+setenv loadaddr 0x46000000
91
+setenv initrd_addr 0x48000000
92
+setenv fdtaddr 0x47000000
93
+
94
+setenv initrd_high 0xffffffff
95
+setenv fdt_high 0xffffffff
96
+
97
+setenv loadkernel load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file}
98
+setenv loadinitrd load mmc \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}\\; setenv initrd_size \\\${filesize}
99
+setenv loadfdt load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile}
100
+
101
+setenv loadfiles run loadkernel\\; run loadinitrd\\; run loadfdt
102
+setenv mmcargs setenv bootargs console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} rootflags=\${mmcrootflags}
103
+
104
+run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr}
105
+EOF
106
+
107
+    # boot.scr for Allwinner A20 based device
108
+    mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
109
+
110
+    # Copy all DTBs
111
+    mkdir -p /boot/dtbs
112
+    cp /usr/lib/$kernelVersion/* /boot/dtbs
113
+
114
+    # extra boot modules
115
+    echo "rtc_sunxi" >> /etc/initramfs-tools/modules
116
+}
117
+
118
+function beaglebone_env {
119
+    bbb_version=$1
120
+
121
+    # Setup uEnv.txt
122
+    if grep -q btrfs /etc/fstab ; then
123
+        fstype=btrfs
124
+    else
125
+        fstype=ext4
126
+    fi
127
+    if [ ! $bbb_version ]; then
128
+        kernelVersion=$(ls /usr/lib/*/am335x-boneblack.dtb | head -1 | cut -d/ -f4)
129
+    else
130
+        kernelVersion=$(ls /usr/lib/*/am335x-boneblack-${1}.dtb | head -1 | cut -d/ -f4)
131
+    fi
132
+    version=$(echo $kernelVersion | sed 's/linux-image-\(.*\)/\1/')
133
+    initRd=initrd.img-$version
134
+    vmlinuz=vmlinuz-$version
135
+
136
+    #bbb_loadaddr='0x80200000'
137
+    #bbb_initrd_addr='0x81000000'
138
+    #bbb_fdtaddr='0x80F80000'
139
+    #if [[ "$bbb_version" == "wireless" ]]; then
140
+        bbb_loadaddr='0x82000000'
141
+        bbb_initrd_addr='0x88080000'
142
+        bbb_fdtaddr='0x88000000'
143
+    #fi
144
+
145
+    # uEnv.txt for Beaglebone
146
+    # based on https://github.com/beagleboard/image-builder/blob/master/target/boot/beagleboard.org.txt
147
+    cat >> /boot/uEnv.txt <<EOF
148
+mmcroot=/dev/mmcblk0p2 ro
149
+mmcrootfstype=$fstype rootwait fixrtc
150
+mmcrootflags=subvol=@
151
+
152
+console=ttyO0,115200n8
153
+
154
+kernel_file=$vmlinuz
155
+initrd_file=$initRd
156
+
157
+loadaddr=$bbb_loadaddr
158
+initrd_addr=$bbb_initrd_addr
159
+fdtaddr=$bbb_fdtaddr
160
+
161
+initrd_high=0xffffffff
162
+fdt_high=0xffffffff
163
+
164
+loadkernel=load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file}
165
+loadinitrd=load mmc \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}; setenv intrd_size \${filesize}
166
+loadfdt=load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile}
167
+
168
+loadfiles=run loadkernel; run loadinitrd; run loadfdt
169
+mmcargs=setenv bootargs console=tty0 console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} rootflags=\${mmcrootflags}
170
+
171
+uenvcmd=run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr}
172
+EOF
173
+
174
+    mkdir -p /boot/dtbs
175
+    cp /usr/lib/linux-image-*-armmp/* /boot/dtbs
176
+}
177
+
52 178
 case "$MACHINE" in
53 179
     beaglebone)
180
+        beaglebone_env
181
+        enable_serial_console ttyO0
54 182
         setup_flash_kernel 'TI AM335x BeagleBone Black' 'ttyO0'
55 183
         ;;
56 184
     beaglebonewifi)
185
+        beaglebone_env
186
+        enable_serial_console ttyO0
57 187
         setup_flash_kernel 'TI AM335x BeagleBone Black Wireless' 'ttyO0'
58 188
         ;;
59 189
     cubietruck)
190
+        a20_env sun7i-a20-cubietruck.dtb
191
+        enable_serial_console ttyO0
60 192
         setup_flash_kernel 'Cubietech Cubietruck'
61 193
         ;;
62 194
     a20-olinuxino-lime)
195
+        a20_env sun7i-a20-olinuxino-lime.dtb
196
+        enable_serial_console ttyO0
63 197
         setup_flash_kernel 'Olimex A20-OLinuXino-LIME'
64 198
         ;;
65 199
     a20-olinuxino-lime2)
200
+        a20_env sun7i-a20-olinuxino-lime2.dtb
201
+        enable_serial_console ttyO0
66 202
         setup_flash_kernel 'Olimex A20-OLinuXino-LIME2'
67 203
         ;;
68 204
     a20-olinuxino-micro)
205
+        a20_env sun7i-a20-olinuxino-micro.dtb
206
+        enable_serial_console ttyO0
69 207
         setup_flash_kernel 'Olimex A20-Olinuxino Micro'
70 208
         ;;
71 209
     cubieboard2)
210
+        a20_env sun7i-a20-cubieboard2.dtb
211
+        enable_serial_console ttyO0
72 212
         setup_flash_kernel 'Cubietech Cubieboard2'
73 213
         ;;
74 214
     pcduino3)
215
+        a20_env sun7i-a20-pcduino3.dtb
216
+        enable_serial_console ttyO0
75 217
         setup_flash_kernel 'LinkSprite pcDuino3'
76 218
         ;;
77 219
 esac