More info about how images are created
This commit is contained in:
parent
c6b4e506d1
commit
5e7754b436
10
brick/scripts/README.md
Normal file
10
brick/scripts/README.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Patched EV3 image
|
||||||
|
|
||||||
|
The file `ev3-fs.patch` summarizes the changes done to the original V1.09D image.
|
||||||
|
You can see some text files are edited, the `d_usbdev.ko` is updated (sources in `../kernel`),
|
||||||
|
`uf2d` added (sources in `../uf2daemon`), and a stock `nbd.ko` module is added.
|
||||||
|
|
||||||
|
Additionally, the `edimax01.ko` is replaced by now much more popular `rtl8192cu.ko` (also stock).
|
||||||
|
|
||||||
|
The init script has a hook for running a shell script from `/mnt/ramdisk/`. This can be used
|
||||||
|
for testing different modules etc.
|
36
brick/scripts/ev3-fs.patch
Normal file
36
brick/scripts/ev3-fs.patch
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
diff -ur orig-ev3/etc/init.d/ev3init.sh dev-ev3/etc/init.d/ev3init.sh
|
||||||
|
--- orig-ev3/etc/init.d/ev3init.sh 1970-01-01 01:00:00.000000000 +0100
|
||||||
|
+++ dev-ev3/etc/init.d/ev3init.sh 2017-07-25 15:55:03.642866971 +0100
|
||||||
|
@@ -60,3 +60,6 @@
|
||||||
|
sleep 2
|
||||||
|
hciattach /dev/ttyS2 texas 2000000 "flow" "nosleep" $STRING
|
||||||
|
sdptool add SP
|
||||||
|
+
|
||||||
|
+insmod /lib/modules/2.6.33-rc4/kernel/drivers/net/wireless/rtl8192cu.ko
|
||||||
|
+. /mnt/ramdisk/rc.local || :
|
||||||
|
Only in orig-ev3/home/root/lms2012/sys: exit~
|
||||||
|
diff -ur orig-ev3/home/root/lms2012/sys/init dev-ev3/home/root/lms2012/sys/init
|
||||||
|
--- orig-ev3/home/root/lms2012/sys/init 1970-01-01 01:00:00.000000000 +0100
|
||||||
|
+++ dev-ev3/home/root/lms2012/sys/init 2017-07-26 18:36:03.814459337 +0100
|
||||||
|
@@ -5,13 +5,15 @@
|
||||||
|
var=$(printf 'HostStr=%s SerialStr=%s' $(cat /home/root/lms2012/sys/settings/BrickName) $(cat /home/root/lms2012/sys/settings/BTser))
|
||||||
|
echo $var > /home/root/lms2012/sys/settings/UsbInfo.dat
|
||||||
|
|
||||||
|
+insmod ${PWD}/mod/nbd.ko
|
||||||
|
+${PWD}/uf2d
|
||||||
|
insmod ${PWD}/mod/d_iic.ko `cat /home/root/lms2012/sys/settings/HwId`
|
||||||
|
insmod ${PWD}/mod/d_uart.ko `cat /home/root/lms2012/sys/settings/HwId`
|
||||||
|
insmod ${PWD}/mod/d_power.ko `cat /home/root/lms2012/sys/settings/HwId`
|
||||||
|
insmod ${PWD}/mod/d_pwm.ko `cat /home/root/lms2012/sys/settings/HwId`
|
||||||
|
insmod ${PWD}/mod/d_ui.ko `cat /home/root/lms2012/sys/settings/HwId`
|
||||||
|
insmod ${PWD}/mod/d_analog.ko `cat /home/root/lms2012/sys/settings/HwId`
|
||||||
|
-insmod ${PWD}/mod/d_usbdev.ko `cat /home/root/lms2012/sys/settings/UsbInfo.dat`
|
||||||
|
+insmod ${PWD}/mod/d_usbdev.ko `cat /home/root/lms2012/sys/settings/UsbInfo.dat` file=/dev/nbd0
|
||||||
|
insmod ${PWD}/mod/d_usbhost.ko
|
||||||
|
insmod ${PWD}/mod/d_sound.ko `cat /home/root/lms2012/sys/settings/HwId`
|
||||||
|
insmod ${PWD}/mod/d_bt.ko `cat /home/root/lms2012/sys/settings/HwId`
|
||||||
|
Binary files orig-ev3/home/root/lms2012/sys/mod/d_usbdev.ko and dev-ev3/home/root/lms2012/sys/mod/d_usbdev.ko differ
|
||||||
|
Only in dev-ev3/home/root/lms2012/sys/mod: nbd.ko
|
||||||
|
Only in dev-ev3/home/root/lms2012/sys: uf2d
|
||||||
|
Only in orig-ev3/lib/modules/2.6.33-rc4/kernel/drivers/net/wireless: edimax01.ko
|
||||||
|
Only in dev-ev3/lib/modules/2.6.33-rc4/kernel/drivers/net/wireless: rtl8192cu.ko
|
@ -1,14 +1,34 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
let fs = require("fs")
|
let fs = require("fs")
|
||||||
|
let bootargs = "mem=${memsize} initrd=${filesysaddr},${filesyssize} root=/dev/ram0 rw rootfstype=cramfs console=${console} ip=${ipaddr} lpj=747520 quiet"
|
||||||
|
let bootnews = "mem=64M initrd=0xC1180000,10M root=/dev/ram0 rw rootfstype=cramfs console=${console} lpj=747520 quiet musb_hdrc.debug=2"
|
||||||
|
let piggy = true
|
||||||
|
|
||||||
function build() {
|
function build() {
|
||||||
|
if (bootnews.length > bootargs.length) {
|
||||||
|
console.log("args too long")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
while (bootnews.length < bootargs.length)
|
||||||
|
bootnews += " "
|
||||||
|
|
||||||
let cr = fs.readFileSync("cram.bin")
|
let cr = fs.readFileSync("cram.bin")
|
||||||
if (cr.length > 10878976) {
|
if (cr.length > 10878976) {
|
||||||
console.log("too big")
|
console.log("too big")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let img = fs.readFileSync("boot.bin")
|
let img = fs.readFileSync("EV3 Firmware V1.09D.bin")
|
||||||
|
|
||||||
|
for (let i = 0; i < bootnews.length; ++i) {
|
||||||
|
if (img[0x21DDA + i] != bootargs.charCodeAt(i)) {
|
||||||
|
console.log("boot args mismatch")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
img[0x21DDA + i] = bootnews.charCodeAt(i)
|
||||||
|
}
|
||||||
|
|
||||||
let off = 0x250000
|
let off = 0x250000
|
||||||
if (img[off] != 0x45 || img[off + 1] != 0x3d) {
|
if (img[off] != 0x45 || img[off + 1] != 0x3d) {
|
||||||
console.log("bad magic: " + img[off] + " / " + img[off+1])
|
console.log("bad magic: " + img[off] + " / " + img[off+1])
|
||||||
@ -17,8 +37,8 @@ function build() {
|
|||||||
|
|
||||||
cr.copy(img, off)
|
cr.copy(img, off)
|
||||||
|
|
||||||
let kern = fs.readFileSync("piggy-patched.gzip")
|
let kern = fs.readFileSync(piggy ? "piggy-patched.gzip" : "linux/arch/arm/boot/uImage")
|
||||||
off = 0x0005540f
|
off = piggy ? 0x0005540f : 0x00050000
|
||||||
|
|
||||||
if (img[off] != kern[0] || img[off+1] != kern[1]) {
|
if (img[off] != kern[0] || img[off+1] != kern[1]) {
|
||||||
console.log("bad kernel magic: " + img[off] + " / " + img[off+1])
|
console.log("bad kernel magic: " + img[off] + " / " + img[off+1])
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# dd if=EV3\ Firmware\ V1.09D.bin of=orig.cram bs=65536 skip=37 count=400
|
||||||
|
|
||||||
sudo mkfs.cramfs dev-ev3 cram.bin
|
sudo mkfs.cramfs dev-ev3 cram.bin
|
||||||
node img
|
node img
|
||||||
ls -l firmware.bin
|
ls -l firmware.bin
|
||||||
|
Loading…
Reference in New Issue
Block a user