Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
equipment:oea-euro-miss:em5 [2014/11/06 14:24] sergey |
equipment:oea-euro-miss:em5 [2025/03/27 21:34] (текущий) ryzhikov |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Контроллер ЕМ5 ====== | + | ====== ЕМ-5 Контроллер ====== |
Строка 5: | Строка 5: | ||
com: 38400 8N1 | com: 38400 8N1 | ||
+ | |||
+ | miniterm /dev/ttyUSB0 38400 --raw | ||
+ | |||
<code> | <code> | ||
0x00000000 : "Bootloader" | 0x00000000 : "Bootloader" | ||
0x00020000 : "Kernel" | 0x00020000 : "Kernel" | ||
- | 0x00160000 : "Filesystem" | + | 0x00220000 : "Filesystem" |
- | в новой версии: | ||
- | 0x00000000: "Bootloader" | ||
- | 0x00020000: "Kernel" | ||
- | 0x002A0000: "Filesystem" | ||
</code> | </code> | ||
Строка 37: | Строка 36: | ||
</file> | </file> | ||
- | ==== Параметры uboot ==== | + | === Компиляция === |
+ | Исходные коды Buildroot и Linux собираются в виртуальной машине em5-dev. | ||
+ | |||
+ | В домашней папке есть директории buildroot/ (ссылка на buildroot2013-5) и linuxdir/ (ссылка на buildroot/output/build/linux...). | ||
+ | |||
+ | Конфиг buildroot лежит в директории configs/ в домашней папке пользователя. Обратите внимание, что Linux собирается вемсте с buildroot (чтобы автоматом применились патчи). | ||
+ | |||
+ | Путь к конфигу Linux прописан в конфиге buildroot. Там же прописана директория с патчами, которые нужно применить к исходному коду Linux и директория, в которой искать скачанные файлы пакетов (вероятно, URL многих из них через 15 лет "протухнут", так что берегите эти файлы). | ||
+ | |||
+ | Для редактирования конфига используется команда make-menuconfig или make-gconfig. | ||
+ | |||
+ | Конфиг busybox -- `make busybox-menuconfig`. | ||
+ | |||
+ | Сборка ядра -- `make linux-rebuild`, uboot -- `make uboot-rebuild`. | ||
+ | |||
+ | Артефакты сборки Buildroot лежат в output/images: zImage, rootfs.tar (+rootfs.jffs) и u-boot.bin. | ||
+ | Их нужно залить на флеш-память контроллера. Для сбойных флешек рекомендуется заливать не образ jffs, а создавать пустую jffs, после чего распаковывать в неё файлы из rootfs.tar. | ||
+ | |||
+ | Когда создается rootfs, поверх неё копируется содержимое директории em5_rootfs_overlay. | ||
+ | Именно в неё нужно добавлять свои файлы, чтобы они в конечном итоге оказались в образе файловой системы. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === Параметры uboot === | ||
<code> | <code> | ||
Строка 53: | Строка 76: | ||
setenv hostname pandapc01 | setenv hostname pandapc01 | ||
setenv bootargs_nfs root=/dev/nfs rw nfsroot=\$(serverip):\$(nfspath),rsize=1024,wsize=1024 ip=\$(ipaddr):::\$(netmask):\$(hostname) debug console=ttyS0,\$(baudrate) nfsrootdebug | setenv bootargs_nfs root=/dev/nfs rw nfsroot=\$(serverip):\$(nfspath),rsize=1024,wsize=1024 ip=\$(ipaddr):::\$(netmask):\$(hostname) debug console=ttyS0,\$(baudrate) nfsrootdebug | ||
+ | setenv bootargs_flash root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,38400 | ||
+ | |||
+ | #256bit controller: | ||
+ | setenv bootargs_flash root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,38400 mem=128M@0xA0000000 | ||
+ | setenv bootargs_nfs root=/dev/nfs rw nfsroot=\$(serverip):\$(nfspath),rsize=1024,wsize=1024 ip=\$(ipaddr):::\$(netmask):\$(hostname) debug console=ttyS0,\$(baudrate) mem=128M@0xA0000000 | ||
+ | |||
setenv bootcmd_nfs tftpboot zImage\\;wtags\\;go | setenv bootcmd_nfs tftpboot zImage\\;wtags\\;go | ||
setenv bootcmd_flash cp.b 20000 \$(fileaddr) \$(filesize)\\;wtags\\;go | setenv bootcmd_flash cp.b 20000 \$(fileaddr) \$(filesize)\\;wtags\\;go | ||
- | setenv bootargs_flash root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,38400 | + | |
printenv | printenv | ||
Строка 74: | Строка 103: | ||
</code> | </code> | ||
- | Flash kernel image. | + | Flash filesystem image. |
<code> | <code> | ||
- | tftpboot zImage | + | tftpboot rootfs.jffs2 |
- | erase 1:4-13 | + | # По неведомой причине (особенности jffs?) стирать нужно до конца. |
- | или | + | erase 1:18- |
- | erase 1:8-55 | + | cp.b $(fileaddr) 220000 $(filesize) |
- | cp.b $(fileaddr) 80000 $(filesize) | + | |
- | reset | + | |
</code> | </code> | ||
- | Flash filesystem image. | + | Flash kernel images. |
<code> | <code> | ||
- | tftpboot rootfs.arm.jffs2 | + | tftpboot zImage |
- | # По неведомой причине (особенности jffs?) стирать нужно до конца. | + | erase 1:4-17 |
- | erase 1:14- | + | cp.b $(fileaddr) 20000 $(filesize) |
- | cp.b $(fileaddr) 160000 $(filesize) | + | setenv bootcmd cp.b 20000 $(fileaddr) $(filesize)\;wtags\;go |
- | или | + | |
- | erase 1:56- | + | |
- | cp.b $(fileaddr) 380000 $(filesize) | + | |
reset | reset | ||
</code> | </code> | ||
+ | |||
+ | |||
==== Current problems ==== | ==== Current problems ==== | ||
+ | |||
+ | uboot is not setting MAC address on em5-3 | ||
+ | Check out a patch: http://armadeus.svn.sourceforge.net/viewvc/armadeus/trunk/buildroot/target/u-boot/u-boot-1.3.4-111-apf9328-DM9000.patch?revision=1009&view=markup | ||
+ | |||
+ | |||
+ | |||
+ | ==== Сборка проекта: ==== | ||
+ | Прошивка Xilinx Spartan собирается в Xilinx ISE. | ||
+ | |||
+ | Под Linux: | ||
+ | - Запускаем settings64.sh | ||
+ | - Запускаем lmgrd (менеджер лицензий). | ||
+ | - Запускаем ISE: ISE/bin/lin64/ise | ||
+ | - Открываем проект, обычным образом запускам Build. | ||
+ | - Запускаем ISE Impact | ||
+ | - Переключаем output на xsvf | ||
+ | - Выполняем команду "Program" | ||
+ | - Output -> Stop writing | ||
- | Network crashes when trying to transfer large file from rootfs (mtd device) to nfs-mounted folder. | ||
- | When trying dd /dev/zero the same way, all seems to be fine. | ||
- | <code> | ||
- | WARNING: at net/sched/sch_generic.c:219 () | ||
- | NETDEV WATCHDOG: eth0 (dm9000): transmit timed out | ||
- | Modules linked in: | ||
- | Function entered at [<c01f168c>] from [<c0031178>] | ||
- | Function entered at [<c0031120>] from [<c018f7f8>] | ||
- | r3:c3889000 r2:c0219e14 | ||
- | r7:00000014 r6:00000001 r5:c3889000 r4:c0264b88 | ||
- | Function entered at [<c018f678>] from [<c003b310>] | ||
- | Function entered at [<c003b174>] from [<c0036a14>] | ||
- | Function entered at [<c00369b0>] from [<c0036ac4>] | ||
- | Function entered at [<c0036a7c>] from [<c001b048>] | ||
- | Function entered at [<c001b000>] from [<c001b898>] | ||
- | Exception stack(0xc0233f48 to 0xc0233f90) | ||
- | 3f40: 00000001 c384a940 00000000 60000013 c001ce0c c0232000 | ||
- | 3f60: c001ce0c c024af28 a001705c 69054117 a0017028 c0233f9c c0233fa0 c0233f90 | ||
- | 3f80: c001ce50 c001ce5c 60000013 ffffffff | ||
- | r6:04000000 r5:c0233f7c r4:ffffffff | ||
- | Function entered at [<c001ce0c>] from [<c001cdd8>] | ||
- | Function entered at [<c001cd9c>] from [<c01f00bc>] | ||
- | r7:c0235bac r6:c0018da8 r5:c024aef0 r4:c0232000 | ||
- | Function entered at [<c01f004c>] from [<c000896c>] | ||
- | r4:c025f17c | ||
- | Function entered at [<c0008718>] from [<a0008034>] | ||
- | r6:c00191ac r5:c024af8c r4:0000397d | ||
- | ---[ end trace bb1fd0722dd5fe86 ]--- | ||
- | eth0: link down | ||
- | </code> |