Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Обсуждение MT7688AN HLK-7688A

Тема в разделе "Другие WiFi модули и оборудование", создана пользователем aloika, 11 ноя 2017.

  1. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.004
    Симпатии:
    1.302
    Это конкретное железо - "медиатека", "флешки", "рам-а" и т.д.
    Нет никакого смысла иметь if-ы и прочие ветки для других типов. Всё равно КАЖДЫЙ код любого пакета будет переписан (от 10%) и ненужны никакие обновления от Ардуинщиков.
    На исправление ошибок и обновление всё равно приедет специальный человек с необходимым оборудованием или сменой. Цена блока обычно составляет менее 0.001% от всего оборудования :)
     
  2. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.004
    Симпатии:
    1.302
    И чтобы блоки менять не задумываясь, нужно чтобы он стоил копейки в мелкосерийном производстве. Большие монстры дохнут как мухи – это из опыта… После четверти века производства нашего оборудования, когда парк перевалил за тысячи, стали очень часто дохнуть дорогие “фирменные” контроллеры… Наверно туда, в большие корпорации, добрались Ардуинщики. Дохнут в них встроенные модули с CPU – может flash протирается или ещё чего…
     
  3. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.004
    Симпатии:
    1.302
    Самые примитивные блоки управления (упрощенная версия установки), созданные ещё в начале 1990-х на PIC16, так и работают 24/7 на заводе... В 2012 вроде, потребовалось сменить основную циклограмму (за годы накопилось нововведений по физическому процессу)… Так и работают, без остановки, а с современной комплектухой так не выходит – что нибудь да вылетит за годы...
     
  4. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    596
    Симпатии:
    52
    Состояние u-boot под mt7688 таково что вопросы "зачем..." неуместны. Там ужас-ужас, хорошо что хоть как-то запускается. Я пытался понять как оно инициализируется чтобы сделать версию загружаемую в ram через jtag. Фиг там разберешься в куче ifdef-ов.

    Поддержку потихоньку запиливают в mainline u-boot
    Mainline U-Boot Support for MT7688 and LinkIt Smart 7688 available
     
  5. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.004
    Симпатии:
    1.302
    Я только вчера туда влез. Там хотели сделать универсальный boot - писать его в nvram, spi, mmc, usb, ... и от этого потеряли загрузку environment. При старте уже нет места в SRAM, а остальное не проинито. Выкинули environment, выкинули универсальность носителя и стали дописывать кусками -> теперь при разных def установках разные error и ничего не стыкуется.
    Может этот код пройти авто предкомпиляцией и выкинуть все ifdef, т.к. остальные ветки всё равно "засохли"?
     
  6. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    596
    Симпатии:
    52
    Я считаю что ковырять стоит только mainline u-boot. Проприетарный подшаманить чтобы как нибудь загружался и хорош. "доктор сказал в морг - значит в морг"
     
  7. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    561
    Симпатии:
    64
    Начальный загрузчик работает 4-5 секунд, следующие 20 секунд просыпается ядро и запускаются службы.
    В ядре уж и меняем скорость для консоли если нужно.
    Оборудование выключается только в аварийных случаях, сократить время загрузки на 5 секунд, чтоб следующий раз через 2-3 месяца (а то и через полгода) быстро стартовали, а зачем?
    Другой MCU использует uart для общения с консолью медиатека? Для чего консоль ему нужна?
    Для контроля флешки (а вдруг там что то подменили) другой mcu подключен к ней же, он зажимает ресет на медиатеке и читает флешку сам :) Считает хеши для разделов, не включая оверлей, он почему-то меняется с каждым включением.
     
  8. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.004
    Симпатии:
    1.302
    338K сен 18 14:42 u-boot-ram.bin
    340K сен 18 14:46 u-boot-spi-nor.bin
    Куда такая лошадь?
     
  9. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.004
    Симпатии:
    1.302
    Ну вот, а в это время все другие контроллеры уже проснулись и работают, а ваш модуль, выполняющий пусть логгирование ещё грузится :)
    15..17 сек - предел.
    Оборудование выключается и выключается автоматически - резервирование и профил. работы. Где не пашут 24/7 - там всё вырубают каждый день.
    Вы прикажите всем работникам
    пока оборудование замигает лампочками при включении?

    Пусть там будет RS-485 Modbus :)
    Защиты практикуются только у школьников и Ардуинщиков.
     
  10. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.004
    Симпатии:
    1.302
    Там меняются заголовки разделов - это такая специальная фича от Ардуиншиков в Linux дровах, чтобы протереть дырку в flash.
    На ro разделах - аналогично, на всех новых носителях. Куда-то надо сохранять статистику и время обращения :)
    По тому и говорю - надо каждый кусок кода редактировать...
     
  11. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    561
    Симпатии:
    64
    Не наш случай ;) При отключении основного электропитания оборудование должно работать на резервном минимум 4 часа, это обязательное условие.
    Представите, у вас производство, отключили электропитание - производство остановилось, теряем деньги. Если поставщик электроэнергии постоянно отключается, используем не одного а нескольких. Иначе никак.
     
  12. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.004
    Симпатии:
    1.302
    Вся установка жрет от десяток до сотен кВт и часто стоит на производстве, где потребление конвеера или печи, или других мех.устройств ещё больше. Чем их питать? Местную АЭС поставить?
    Часто простой получается когда пришли с обеда и врубили рубильник и ждут "загрузки"...
    На пример на стекольном заводе - там за секунду одна линия штампует 10 стаканов... А если вырубилось эл-во - приезжают пожарные машины - тушить расплавившуюся печь, которая без обдува... и им уже не до нашей части...
     
  13. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.004
    Симпатии:
    1.302
    Бесперебойники ставятся только на электронную часть. Но это бывает очень редко и по спец заказу. Смысла в них нет. Только один - передавать в головной корпус, что система остановлена :) (что и так можно догадаться по отсутствию связи)
     
  14. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.004
    Симпатии:
    1.302
    Для морского и прочих взрыв/беда окружающая среда тоже иногда ставят бесперебойники. Типа чтобы сирена от датчиков сработала :) Но на такие заказы бюджет большой и тендер. Туда всегда требуют что-то типа Siemens и вообще всё пофиг – лиш-бы сдать, а потом трава не расти, т.к. см. “подрядчик”.
     
  15. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.004
    Симпатии:
    1.302
    @sharikov - mainline u-boot-ram.bin (338КБ):
    log (раскрыть)
    Код (Text):
    1. U-Boot 2019.04-rc2 (Sep 18 2019 - 14:39:24 +0300)
    2.  
    3. CPU:   MT7628 Rev 1.2 - Boot from XTAL (3-Byte SPI Addr)
    4. Model: LinkIt-Smart-7688
    5. DRAM:  128 MiB
    6. Loading Environment from SPI Flash... SF: Detected w25q256 with page size 256 Bytes, erase size 4 KiB, total 32 MiB
    7. *** Warning - bad CRC, using default environment
    8.  
    9. Net:
    10. Warning: eth@10110000 (eth0) using random MAC address - ca:d0:ec:57:1e:02
    11. eth0: eth@10110000
    12. => ?
    13. ?       - alias for 'help'
    14. base    - print or set address offset
    15. bdinfo  - print Board Info structure
    16. boot    - boot default, i.e., run 'bootcmd'
    17. bootd   - boot default, i.e., run 'bootcmd'
    18. bootm   - boot application image from memory
    19. bootp   - boot image via network using BOOTP/TFTP protocol
    20. cmp     - memory compare
    21. coninfo - print console devices and information
    22. cp      - memory copy
    23. crc32   - checksum calculation
    24. dhcp    - boot image via network using DHCP/TFTP protocol
    25. dm      - Driver model low level access
    26. echo    - echo args to console
    27. editenv - edit environment variable
    28. env     - environment handling commands
    29. exit    - exit script
    30. false   - do nothing, unsuccessfully
    31. fdt     - flattened device tree utility commands
    32. go      - start application at address 'addr'
    33. gpio    - query and control gpio pins
    34. help    - print command description/usage
    35. iminfo  - print header information for application image
    36. itest   - return true/false on integer compare
    37. led     - manage LEDs
    38. license - print GPL license text
    39. loadb   - load binary file over serial line (kermit mode)
    40. loadx   - load binary file over serial line (xmodem mode)
    41. loady   - load binary file over serial line (ymodem mode)
    42. loop    - infinite loop on address range
    43. md      - memory display
    44. mdio    - MDIO utility commands
    45. meminfo - display memory information
    46. mii     - MII utility commands
    47. mm      - memory modify (auto-incrementing address)
    48. mw      - memory write (fill)
    49. nfs     - boot image via network using NFS protocol
    50. nm      - memory modify (constant address)
    51. ping    - send ICMP ECHO_REQUEST to network host
    52. printenv- print environment variables
    53. reset   - Perform RESET of the CPU
    54. run     - run commands in an environment variable
    55. saveenv - save environment variables to persistent storage
    56. setenv  - set environment variables
    57. setexpr - set environment variable as the result of eval expression
    58. sf      - SPI flash sub-system
    59. showvar - print local hushshell variables
    60. sleep   - delay execution for some time
    61. source  - run script from memory
    62. sspi    - SPI utility command
    63. test    - minimal test like /bin/sh
    64. tftpboot- boot image via network using TFTP protocol
    65. time    - run commands and summarize execution time
    66. true    - do nothing, successfully
    67. version - print monitor, compiler and linker version
    68. => printenv
    69. baudrate=115200
    70. bootdelay=2
    71. fdtcontroladdr=87e9a10c
    72. stderr=uart2@e00
    73. stdin=uart2@e00
    74. stdout=uart2@e00
    75.  
    76. Environment size: 103/16380 bytes
    77. => bdinfo
    78. boot_params = 0x87ea1948
    79. memstart    = 0x80000000
    80. memsize     = 0x08000000
    81. flashstart  = 0x00000000
    82. flashsize   = 0x00000000
    83. flashoffset = 0x00000000
    84. ethaddr     = (not set)
    85. IP addr     = <NULL>
    86. baudrate    = 115200 bps
    87. relocaddr   = 0x87fa0000
    88. reloc off   = 0x07f90000
    89.  

    Половина команд не работает, половина виснет...
    Зато есть команда "license" - print GPL license text. Выводит полную простыню лицензии.
    reset тоже не работает - HLK виснет до передергивания кнопкой reset и подачи + на CS1.
     
  16. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.004
    Симпатии:
    1.302
    Короче, с HLK-7688A пока так:

    Работает uboot переписанный от Linkit, tftp заработал, проверку загрузки с USB осуществить на даче не могу, но есть исходники варианта с usb от Onion Omega которые проверял (как-то работают). Так-же есть старенькие уже проверенные рабочие uboot для mips и если что, то переписать их для MT дело недели. На том пока оставил.

    Далее надо разобраться с самой текущей версией OpenWRT – тут для сборки, коррекции, тестов и проверок минимальной системы требуется не менее полугода на одного человека и нескольких тестировщиков в реальной рабочей обстановке... Чтобы приступать к такому необходимо вдоль и поперек оценить возможности уже конкретно самого модуля для решения необходимых задач.

    Думаю, что за полгода ничего нового в данной весовой категории на рынок не выйдет. Но для большинства задач производительности MT7688A уже не хватает, т.к. для ускорения разработки желательна поддержка языка высокого уровня, типа Питона. А данный модуль на нем тормозит и есть ограничения в объеме SPI-Flash... Т.е. задачи должны ограничиваться реализацией на СИ и мастерством-знаниями программиста.
     
  17. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.004
    Симпатии:
    1.302
    spi-config -d /dev/spidev0.1 -s 100000 | echo 0123456789abcdef | spi-pipe -d /dev/spidev0.1 -b 16:
    upload_2019-9-19_19-6-0.png

    spi-config -d /dev/spidev0.1 -s 00000 | echo 0123456789abcdef0123456789abcdef | spi-pipe -d /dev/spidev0.1 -b 17:
    Код (Text):
    1.  
    2. [ 1442.073615] ------------[ cut here ]------------
    3. [ 1442.078342] WARNING: CPU: 0 PID: 1605 at drivers/spi/spi-mt7621.c:297 mt7621_spi_transfer_one_message+0x12c/0x600
    4. [ 1442.088841] Modules linked in: pppoe ppp_async pppox ppp_generic nf_conntrack_ipv6 mt76x2e mt76x2_common mt76x02_lib mt7603e mt76 mac80211 iptable_nat ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_conntrack xt_comment xt_TCPMSS xt_REDIRECT xt_LOG xt_FLOWOFFLOAD usbhid ums_usbat ums_sddr55 ums_sddr09 ums_karma ums_jumpshot ums_isd200 ums_freecom ums_datafab ums_cypress ums_alauda spidev slhc pwm_mediatek_ramips nf_reject_ipv4 nf_nat_redirect nf_nat_masquerade_ipv4 nf_conntrack_ipv4 nf_nat_ipv4 nf_nat nf_log_ipv4 nf_flow_table_hw nf_flow_table nf_defrag_ipv6 nf_defrag_ipv4 nf_conntrack_rtcache nf_conntrack iptable_mangle iptable_filter ip_tables hid_generic crc_ccitt compat hid evdev input_core i2c_mt7621 i2c_smbus i2c_dev i2c_core ip6t_REJECT
    5. [ 1442.161248]  nf_reject_ipv6 nf_log_ipv6 nf_log_common ip6table_mangle ip6table_filter ip6_tables x_tables mmc_block usb_storage mtk_sd mmc_core leds_gpio uhci_hcd ohci_platform ohci_hcd ehci_platform sd_mod scsi_mod ehci_hcd gpio_button_hotplug ext4 jbd2 mbcache usbcore nls_base usb_common crc16 crc32c_generic crypto_hash
    6. [ 1442.190276] CPU: 0 PID: 1605 Comm: spi-pipe Tainted: G        W       4.14.131 #0
    7. [ 1442.197876] Stack : 80483660 803792a4 00000000 00000000 803de6c4 87323c2c 87372edc 8042d8e7
    8. [ 1442.206377]         803da9e8 00000645 80483660 00000129 02625a00 00000001 87323be0 1301f2dd
    9. [ 1442.214881]         00000000 00000000 80480000 00000000 000001b6 00000000 312e3420 33312e34
    10. [ 1442.223383]         6d6d6f63 00000020 00000040 63206e6f 80000000 00000000 802131fc 803fa080
    11. [ 1442.231887]         00000009 00000129 02625a00 78a9b000 00000000 801dc8b0 00000000 80480000
    12. [ 1442.240376]         ...
    13. [ 1442.242869] Call Trace:
    14. [ 1442.245376] [<8000e514>] show_stack+0x74/0x104
    15. [ 1442.249908] [<80024f50>] __warn+0x110/0x118
    16. [ 1442.254173] [<80024fec>] warn_slowpath_null+0x1c/0x30
    17. [ 1442.259307] [<802131fc>] mt7621_spi_transfer_one_message+0x12c/0x600
    18. [ 1442.265767] [<802113b0>] __spi_pump_messages+0x2c4/0x510
    19. [ 1442.271158] [<80212aa8>] __spi_sync+0x15c/0x1a0
    20. [ 1442.275771] [<80212b1c>] spi_sync+0x30/0x58
    21. [ 1442.280038] [<8761e4b4>] 0x8761e4b4
    22. [ 1442.283595] ---[ end trace 6d2164359a03caa8 ]---
    23. SPI_IOC_MESSAGE: I/O error
     
  18. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.004
    Симпатии:
    1.302
    Решение от Onion:
    OnionIoT has released a new firmware version b176 in Brand New OS Release! & Solar Power Heater on 2-Bullet Tuesday – Onion in which it is stated that:
    • SPI Improvements
      • maximum transfer sizes increased to 4096 bytes
      • MSB corruption fixed for "some" devices ("We’ve observed that some SPI devices still show data corruption but others do not")
    заключается в этом:
    Код (C):
    1.     mt7621_spi_set_cs(spi, 1);
    2.  
    3.     //Go trough all transfers
    4.     list_for_each_entry(t, &m->transfers, transfer_list) {
    5.         //We don't support full duplex
    6.         //but in most cases, this is not necessary anyay
    7.         if(t->tx_buf && t->rx_buf){
    8.             //printk(KERN_ERR "The MT7621-SPI does not support full bidirectional SPI, only doing TX!");
    9.             //There are ways to overcome this limitation partially, but no really clean solution
    10.         }
    11.        
    12.         if(t->tx_buf) {          
    13.             const u8 *buf = t->tx_buf;
    14.             //printk(KERN_INFO "Doing TX");
    15.             m->actual_length += t->len;
    16.  
    17.             for(i = 0; i < t->len; i+=MT7621_MAX_TX_BUFFER)
    18.                 mt7621_spi_transmit(spi, rs, buf+i, min_t(int, t->len-i, MT7621_MAX_TX_BUFFER));
    19.         }
    20.         else if(t->rx_buf) {
    21.             u8 *buf = t->rx_buf;
    22.             //printk(KERN_INFO "Doing RX");
    23.             m->actual_length += t->len;
    24.             for(i = 0; i < t->len; i+=MT7621_MAX_RX_BUFFER)
    25.                 mt7621_spi_receive(spi, rs, buf+i, min_t(int, t->len-i, MT7621_MAX_RX_BUFFER));
    26.         }
    27.         //We don't transfer if we neither got read or write buffer, is that ok?!
    28.     }
    29.  
    30.     mt7621_spi_set_cs(spi, 0);
    31.  
    :) :)
     
  19. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    561
    Симпатии:
    64
    Видел я эти костыли.
    "We’ve observed that some SPI devices still show data corruption but others do not"
    Типа попробуйте, может вам повезет, а может и нет, а если повезло один раз, то нет гарантий что дальше будет работать.
     
  20. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.004
    Симпатии:
    1.302
    Не в том дело. Просто никто не хочет написать нормальный драйвер в открытый доступ !.
    Смотрите реализацию Onion - там если назначен TX буфер то только TX, а RX нет в full duplex :)
    У самого MediaTek SPI содержит и DMA.
    Мир заполонили Ардуинщики, а они умеют только копировать.
     

Поделиться этой страницей