Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Адреса и их обозначение
Показать сообщение отдельно

Аватара для BoBaH 13

Ветеран


Сообщения: 1214
Благодарности: 221

Профиль | Отправить PM | Цитировать


Цитата 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 код: Выделить весь код

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 код: Выделить весь код

/*

 * 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?

Отправлено: 21:13, 25-04-2024 | #5

Название темы: Адреса и их обозначение