Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
equipment:oea-euro-miss:em5 [2013/07/06 23:21] sergey [Параметры uboot] |
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-0x00020000 : "Bootloader" | + | 0x00000000 : "Bootloader" |
| - | 0x00020000-0x00160000 : "Kernel" | + | 0x00020000 : "Kernel" |
| - | 0x00160000-0x02000000 : "Filesystem" | + | 0x00220000 : "Filesystem" |
| </code> | </code> | ||
| Строка 32: | Строка 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> | ||
| Строка 39: | Строка 67: | ||
| setenv ethaddr 00:0d:15:00:72:b4 | setenv ethaddr 00:0d:15:00:72:b4 | ||
| setenv filesize 140000 | setenv filesize 140000 | ||
| + | или 3МБ | ||
| + | setenv filesize 3145728 | ||
| setenv fileaddr A1000000 | setenv fileaddr A1000000 | ||
| setenv netmask 255.255.0.0 | setenv netmask 255.255.0.0 | ||
| setenv ipaddr 10.163.2.121 | setenv ipaddr 10.163.2.121 | ||
| setenv serverip 10.163.2.126 | setenv serverip 10.163.2.126 | ||
| - | setenv nfspath /data/work/em5root/ | + | setenv nfspath /home/user/nfsroot |
| 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 bootcmd_nfs tftpboot zImage\; wtags\; go | + | |
| - | setenv bootcmd_flash cp.b 20000 $(fileaddr) $(filesize)\; wtags\; go | + | |
| setenv bootargs_flash root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,38400 | setenv bootargs_flash root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,38400 | ||
| - | setenv bootargs $(bootargs_flash) | + | |
| - | setenv bootcmd $(bootcmd_flash) | + | #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_flash cp.b 20000 \$(fileaddr) \$(filesize)\\;wtags\\;go | ||
| + | |||
| printenv | printenv | ||
| saveenv | saveenv | ||
| Строка 68: | Строка 103: | ||
| </code> | </code> | ||
| - | Flash kernel image. | + | Flash filesystem image. |
| <code> | <code> | ||
| - | tftpboot zImage | + | tftpboot rootfs.jffs2 |
| - | erase 1:4-13 | + | # По неведомой причине (особенности jffs?) стирать нужно до конца. |
| - | cp.b $(fileaddr) 20000 $(filesize) | + | erase 1:18- |
| - | reset | + | cp.b $(fileaddr) 220000 $(filesize) |
| </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 |
| 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> | ||