Интересует сей вопрос. Девайсина - Тион270.
Если КФС держать на каком-нибудь ext2, то её можно прошить примерно так:
erase ${rd_fladdr} +${filesize}; cp.b ${fileaddr} ${rd_fladdr} ${filesize};
Если же КФС держать на каком-нибудь jffs2, то прошивать надо(под линуксом) примерно так:
# flash_eraseall -j /dev/mtd2
# nandwrite -p /dev/mtd2 rootfs.jffs2
где /dev/mtd2 - интересующий меня раздел(стандратный 3-ий для кфс после uboot и ядра).
То есть простое копирование байтов по типу
# dd if=rootfs.jffs2 of=/dev/mtd2 ошибочно.
Команда cp.b насколько я понимаю делает простое копирование. После её выполнения новая кфс получается битой: со следами старой.
Нужно найти аналог линуксового nandwrite для консоли uboot. Нагуглилось, что такая команда есть - nand(
https://docs.blackfin.uclinux.org/doku.php?id=bootloaders:u-boot:nand-flash). В uboot нужно включить CONFIG_CMD_NAND ну и заодно ещё кое-что.
Сделал вот такой вот патч(для uboot пропатченного уже u-boot-1.3.3_tion-tion270-series_svn894.patch).
--- a/include/configs/tion270.h 2011-05-18 13:12:26.748849541 +0400
+++ b/include/configs/tion270.h 2011-05-18 13:12:49.140849542 +0400
@@ -252,6 +252,11 @@
#define MTDPARTS_DEFAULT "mtdparts=flash:512k(u-boot)ro,4m(kernel)ro,-(fs)"
#define CONFIG_CMD_JFFS2 /* mtdparts command */
+#define CONFIG_CMD_NAND
+#define NAND_MAX_CHIPS 1
+#define CFG_MAX_NAND_DEVICE 1
+#define CFG_NAND_BASE 0x480000 //rd_fladd
+
#define CONFIG_EXTRA_ENV_SETTINGS \
"mtdparts=" MTDPARTS_DEFAULT "\0" \
"partition=nor0,2\0" \
Есть сомнение относительно CFG_NAND_BASE. Вроде здесь надо ставить стартовый адрес раздела. Но этого всего оказывается мало. Сыпется ошибка
drivers/mtd/nand/libnand.a(nand.o): In function `nand_init':
nand.c:(.text+0x20): undefined reference to `board_nand_init'
Нужно эту функцию описать в файле <uboot>/board/tion270/nand.c (по аналогии с другими платами). Вот тут совсем ничего не ясно как железо инициализировать.
У кого-нибудь есть такие наработки? И вообще правильно ли я всё понимаю?