pvvx
Активный участник сообщества
Список поддерживаемых Flash: MediaTek-Labs/linkit-smart-7688-ubootДопустим в изделии применена NAND FLASH.
Всё у них решается путем [inline]#ifdef ADDR_4B[/inline]
Список поддерживаемых Flash: MediaTek-Labs/linkit-smart-7688-ubootДопустим в изделии применена NAND FLASH.
На линкит смарт получилroot@OpenWrt:/# devmem 0x10000010 32
0x00144144
void smart7688_led_blink(void)
{
if (smart7688_led_state) {
RALINK_REG(RALINK_PIO_BASE+PIO_SET1) |= (1 << 12);
smart7688_led_state = 0;
} else {
RALINK_REG(RALINK_PIO_BASE+PIO_CLEAR1) |= (1 << 12);
smart7688_led_state = 1;
}
}
MT7628 # md 10000600
10000600: 00000800 00001000 00000000 ffffffff ................
10000610: 00000000 00000000 00000000 ffffffff ................
10000620: ff203470 0000705f 00000000 ffffffff p4 ._p..........
10000630: ffffffff ffffffff ffffffff ffffffff ................
10000640: ffffffff ffffffff ffffffff ffffffff ................
10000650: 00000000 00000000 00000000 ffffffff ................
10000660: 00000000 00000000 00000000 ffffffff ................
10000670: 00000000 00000000 00000000 ffffffff ................
10000680: 00000000 00000000 00000000 ffffffff ................
10000690: 00000000 00000000 00000000 ffffffff ................
100006a0: 00000000 00000000 00000000 ffffffff ................
На linkit smart решили использовать console=ttyS2,57600 это их выбор, что в этом плохого не ясно.Я пока этот кошмар пытался разгрести MediaTek-Labs/linkit-smart-7688-uboot
Не совпадает с HLK и надо исправлять минимум в 3-х местах:
Номер UART в board\rt2880\serial.h #define CFG_RT2880_CONSOLE
Скорость UART в include\configs\rt2880.h #define CONFIG_BAUDRATE желательно в 115200, #define CONFIG_SERVERIP на желаемые и т.д.
Установки регистров в lib_mips\board.c связанные с GPIOMODE2 и прочим. Найти можно по поиску слова "ARDUINO"
Начальный загрузчик предназначен для разворачивания образа прошивки и для аварийного восстановления. Т.е. уметь работать с установленным флешем и для аварийного восстановления с lan-ом, что касается восстановления с usb - это скорее недостаток чем преимущество, его нужно куда-то выводить, а порт ethernet хотя бы один всегда выведен.Итоги по клонам Linkit-smart-7688-boot - не годятся для пром.применения и жирная точка.
А что вы хотели там увидеть?Кто знает, как это работает? MediaTek-Labs/linkit-smart-7688-uboot
- void smart7688_led_blink(void)
- {
- if (smart7688_led_state) {
- RALINK_REG(RALINK_PIO_BASE+PIO_SET1) |= (1 << 12);
- smart7688_led_state = 0;
- } else {
- RALINK_REG(RALINK_PIO_BASE+PIO_CLEAR1) |= (1 << 12);
- smart7688_led_state = 1;
- }
Если чтение этих регистров RALINK_REG(RALINK_PIO_BASE+PIO_SET1) или RALINK_REG(RALINK_PIO_BASE+PIO_CLEAR1) всегда дает 0xFFFFFFF.
- }
static void* _map_base = (void *) -1;
static inline void set_gpio_direction(int num, int is_output) {
uint32_t v = *((volatile uint32_t*) (_map_base + GPIO_CTRL_0));
*((volatile uint32_t*) (_map_base + GPIO_CTRL_0)) = is_output ? (v | (1 << num)) : (v & ~(1 << num));
}
static inline void set_gpio_value(int num, uint32_t value) {
if (value) {
*(volatile uint32_t*) (_map_base + GPIO_DSET_0) = (uint32_t)(1 << num);
} else {
*(volatile uint32_t*) (_map_base + GPIO_DCLR_0) = (uint32_t)(1 << num);
}
}
static inline uint32_t get_gpio_value(int num) {
uint32_t v = *((volatile uint32_t*) (_map_base + GPIO_DATA_0));
return v & (1 << num);
}
Знак "=", а не "|=".А что вы хотели там увидеть?
Тормозит загрузка и работа, а так более ничегоНа linkit smart решили использовать console=ttyS2,57600 это их выбор, что в этом плохого не ясно.
Смысл во всём есть, если модуль "сочленен" с другим MCU и/или, к примеру, используются все UART. Иногда приходится глушить вывод в UART и доступа к boot через него нет и не возможен. Городить дополнительные кнопки, разъемы и прочее для переключения режимов boot так-же не имеет смысла.Менять начальные загрузчики, например для оптимизации старта, в устройствах, работающих в режиме 24/7 думаю нет большого смысла.
Я перепиливал загрузчик от Widora, перепиливать приличноЯ пока этот кошмар пытался разгрести MediaTek-Labs/linkit-smart-7688-uboot
А для меня разочарованием было обнаружить что штатный драйвер I2C не поддерживает Repeated start. Без него сенсор не работает. Хорошо что нашелся альтернативный драйвер.Для меня было большим разочарованием SPI
При таких "работниках" вам MT7688 противопоказан. В этом процессоре нет boot rom и если ему убили загрузчик остается только шить флэшку программатором. (в плате обязательно нужно предусмотреть разъем для прошивки).Основные причины, почему требуется перепрошивка всего на свете - разгильдяйство сервисного обслуживания. Прошьют что не так при смене каких датчиков и кирдык = менять плату =
Для I2C, SPI и т.д. есть драйверы-удлинители с диф.сигналами - хоть на 100 метров...А для меня разочарованием было обнаружить что штатный драйвер I2C не поддерживает Repeated start. Без него сенсор не работает. Хорошо что нашелся альтернативный драйвер.
И еще разочаровала дохлая нагрузочная способность выводов I2C. Подтяжку 3К уже еле тянет (ноль поднимается).
Это решается проще: В доке напишу - всегда возить с собой запасной блок. И псё - не взяли -= премия.При таких "работниках" вам MT7688 противопоказан. В этом процессоре нет boot rom и если ему убили загрузчик остается только шить флэшку программатором. (в плате обязательно нужно предусмотреть разъем для прошивки).
Вам нужен чип который из состояния "кирпич" шьется по usb .
Для нас это тоже был одним из пунктов против MT*.
В menuconfig вы сами выбираете те пакеты, которые хотите видеть на прошивке.@Алексей. - не в курсе, есть какой пакет "или как", чтобы из помойки дистра OpenWRT создать чистый SDK только для конкретного железа и конкретных пакетов (выкинуть лишний хлам и оставить только нужные исходники пакетов)?
init_baudrate() - не инит, а использует фиксед.