Цитата lxa85:
Насколько я понял -- это код из проекта U-boot. »
|
Всё верно.
Задача: Апнуть роутер тп-линк 840 6.2 по флешки с 4 до 16 и оперативку с 32 до 64 Мб.
Цель : Разметить 16 Мб флешку. Для этого надо сделать необходимые настройки в убутособирателе. Файл выше от него.
Надо сделать бин файл который потом прикручивается в прошивку флешки вместе с фактори. Он рулит разметкой флешки согласно DTS.
Вот
пример разметки на аналогичном устройстве с 16 Мб в стоке. См. с 120 строки.
А дефолтный убутособиратель целиком
здесь.
Данный роутер в стоке с флешкой на 4 Мб которая делится на 3 раздела:
Uboot - загрузчик 64 Кб
Firmwarw - ОС 4 Мб - 64 Кб - 64 Кб
Factory - 64 Кб вайфайный уникальный для каждого роутера раздел. В других роутерах с чипами atheros называется ART.
В моём чип медиатековский МТ7628.
Этот убутособиратель из сырцов для 840-го с оф сайта.
Собран на основе для устройств с процами rt2880.
ХЗ как именно собираются дефолтные бины с одним разделом. В том файле сценарии уже для Dual Image.
С адресами выше разобрался. Там например даётся адрес старта (имхо отбалдёвый) разметки флешки на 2 Мб в 16-й системе:
BC000000 - при переводе его в 10-ю получится 3154116608
Первый банк памяти FLASH_1 начинается тоже с этого места.
BC100000 - это адрес уже FLASH_2 и при переводе в 10-ю получится 3155165184
3155165184 - 3154116608 = 1048576
1048576 / 1024 / 1024 = 1
Т.е. на 2 Мб флешке второй банк памяти находится на смещении 1 Мб от старта.
Убутособиратель для большого числа платформ и там применяются разные значения старта.
Все файлы о которых идёт речь имеются выше по ссылке
здесь. Я например всё открываю с помощью нотепад++ включив подсветку синтаксиса. Только которые .о кракозябристые.
В стококовом убутособирателе выбор размера флеш включается только при активации Dual Image. Но без него тоже можно добавив в настройки для 7628-го в файле config.in (это в самом конце файла):
Скрытый текст
PHP код:
![Выделить весь код](images/misc/selectcode.png)
define_bool ON_BOARD_SPI_FLASH_COMPONENT y
choice 'Flash Size / PA3MEP FLASH' "4M ON_BOARD_4M_FLASH_COMPONENT \
8M ON_BOARD_8M_FLASH_COMPONENT \
16M ON_BOARD_16M_FLASH_COMPONENT
" 4M
if [ "$DUAL_IMAGE_SUPPORT" = "y" ]; then
choice 'Flash Size for DUAL IMAGE' "4M ON_BOARD_4M_FLASH_COMPONENT \
8M ON_BOARD_8M_FLASH_COMPONENT \
16M ON_BOARD_16M_FLASH_COMPONENT
" 4M
fi
Упомянутый ранее файл это include / configs / rt2880.h. Взялся за него по аналогии с
этим.
Пока придумал по принципу: Если не нравятся правила, то задай свои. Вставил в rt2880.h на третьей строчке после коммента:
Скрытый текст
PHP код:
![Выделить весь код](images/misc/selectcode.png)
/*
* FLASH and environment organization
*/
#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
#define CFG_MAX_FLASH_SECT (263) /* max number of sectors on one chip */
вот это:
#if defined (MT7628_FPGA_BOARD) || defined (MT7628_ASIC_BOARD)
#define PHYS_FLASH_START 0xBC000000
#elif defined (ON_BOARD_8M_FLASH_COMPONENT)
#define PHYS_FLASH_1 0xBC000000
#elif defined (ON_BOARD_16M_FLASH_COMPONENT)
#define PHYS_FLASH_1 0xBC000000
#endif
Проверял. Бин собирается. Про ошибки не пишет.
Но пообщался с челом который в этой теме. У него другой принцип деления флешки. Вернее место откуда даётся сценарий.
Вот
Гитхаб его. Сценарий деления задан в profiles/TP-LINK/TP-LINK_WR840N_V6_SPI-16M-64M.config аналог которого в стоковом убутособирателе в корневой папке WR840NV6_20_config.
Вот теперь вскочил вопрос. Откуда вернее задавать сценарий для разметки флешки?
С конфига для определённой модели или с rt2880.h?