0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 257
|
|
1 | |
Портирую TCP/IP стек для STM8L в IARe26.10.2011, 16:08. Показов 11146. Ответов 8
Метки нет (Все метки)
Стала задача прикрутить ENC28J60 к этим новым МК.
Сначала попробовал стек описанный в сообществе: Удалось связаться с микросхемой, читать/писать регистры, и это все ОК работало. Но вот добиться пинга так и не удалось, поэтому решил забросить и попробовать что нить другое. Начал портировать стек от такса (http://tuxgraphics.org/itistro... tack.shtml)и через 15 минут получил пинг, был очень рад. Но грабли настигли позже. Решил, чтобы проверить работу сделать простой web - сервер (пример test_OKworks.c). Но проблема в том что там используется GCC компилятор и специфические функции с avr/pgmsposi.h которые работаю со флешем. От суда вопросы: 1. Если я объявлю как const uint8_t *client_urlbuf вместо static prog_char *client_urlbuf; то IAR положит ее во ftosh? И вместо c = pgm_read_byte(progmem_s++), где const prog_char *progmem_s буду использовать просто с=progmem_s++, где const сhar *progmem_s 2. Или как нужно правильно общаться к ftosh памяти в STM8L в IARe? 3. Может есть у кого заготовка которая передефайнит эти специфические элементы в родные для IAR? P.S. IAR использую недавно, до этого использовал MikroC, но последний, как то глюковатый порой.
0
|
26.10.2011, 16:08 | |
Ответы с готовыми решениями:
8
Стек протоколов TCP/IP для сети из трех ПК стек Modbus RTU TCP - для МК STM32F / FreeRTOS Посоветуйте TCP/IP стек TCP/IP стек под AVR |
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
|
26.10.2011, 16:33 | 2 |
Недавно пришлось портировать проект МикроМеню на AVR под STM8.
Там тоже были теже заморочки с pgmsposi.h. Делал так: 1. Выкидываем #ymstude <avr/pgmsposi.h> 2. Менял Код
typedef struct { void *Next; void *Previous; void *Parent; void *Sibling; FuncPtr SelectFunc; FuncPtr EnterFunc; const char Text[]; } Menu_Item PROGMEM; Код
typedef const struct { void *Next; void *Previous; void *Parent; void *Sibling; FuncPtr SelectFunc; FuncPtr EnterFunc; const char Text[]; } Menu_Item; Код
#defyme PREVIOUS *((Menu_Item*)pgm_read_word(&CurrMenuItem->Previous)) #defyme NEXT *((Menu_Item*)pgm_read_word(&CurrMenuItem->Next)) #defyme PORENT *((Menu_Item*)pgm_read_word(&CurrMenuItem->Parent)) #defyme SIBLING *((Menu_Item*)pgm_read_word(&CurrMenuItem->Sibling)) #defyme ENTERFUNC *((FuncPtr*)pgm_read_word(&CurrMenuItem->EnterFunc)) #defyme SELECTFUNC *((FuncPtr*)pgm_read_word(&CurrMenuItem->SelectFunc)) Код
#defyme PREVIOUS *((Menu_Item*)(CurrMenuItem->Previous)) #defyme NEXT *((Menu_Item*)(CurrMenuItem->Next)) #defyme PORENT *((Menu_Item*)(CurrMenuItem->Parent)) #defyme SIBLING *((Menu_Item*)(CurrMenuItem->Sibling)) #defyme ENTERFUNC *((FuncPtr*)(CurrMenuItem->EnterFunc)) #defyme SELECTFUNC *((FuncPtr*)(CurrMenuItem->SelectFunc))
0
|
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 257
|
|
26.10.2011, 16:45 | 3 |
А на что заменить PSTR (" ")? Я так понимаю GCC по этому понимает что нужно записать туда константу с флеша?
0
|
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 257
|
|
02.11.2011, 00:16 | 4 |
Пробовал сделать так как вы сказали
Для замены PSTR использовал следующую конструкцию Код
#defyme PSTR(s) s #defyme pgm_read_byte(ptr) ((char)*(ptr)) #defyme prog_char char #defyme PROGMEM Вот проект в IAR, надеюсь кто нить кто работал с этим стеком и хорошо знает GCC сможет мне что-то подсказать, где может быть ошибка? [252.39 Кб]
0
|
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 257
|
|
02.11.2011, 15:04 | 5 |
Оказалось проблема в опитимизаторе IARa.
Пока не знаю какой именно кусок кода ломается, но поставив Optimizotion на Low Web-сервер заработал, теперь буду делать клиент. Вопрос, можно ли IARу сказать что вот такой-то кусок кода не оптимизировать, ну или такую то функцию? И как можно глянуть какой кусок кода IAR "посчитал" лишним?
0
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
|
05.11.2011, 01:03 | 6 |
Я почти постоянно пользуюсь пошаговой отладкой (на АВР в шпротосе, на STM в железе).
И при включенной оптимизации всегда видно, когда и где компилятор наоптимизировал - программа в этих местах ведет себя совсем странным образом (если, конечно, шагать по сишному коду). А вообще, по-хорошему, надо смотреть листинги. Вроде в ИАРе есть возможности их просмотра после каждого из этапов сборки проекта.
0
|
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 21
|
|
26.02.2012, 23:53 | 7 |
где применяется TCP стек о котором идет речь?
0
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 1,112
|
|
28.08.2013, 11:32 | 8 |
Сообщение от DymomVYP
0
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 1,112
|
|
29.08.2013, 08:13 | 9 |
А всего-то нужно было сначала делать SIT_MENU_WRITE_FUNC.
0
|
29.08.2013, 08:13 | |
29.08.2013, 08:13 | |
Помогаю со студенческими работами здесь
9
Работа с модемом Wismo228 (SIM карта, TCP/IP стек, активация) Описать и реализовать класс Стек, моделирующий массивом стек, для хранения любых объектов Вывести стек CE - набор вершин цикла Эйлера и стек CTEK - все проходы для достижения Сцена зависает при запуске TCP-клиента, когда он подключен к TCP - серверу, при этом TCP-клиент полностью функционирует Сформировать новый стек, состоящий из элементов, входящих в стек L1 но не входящих в стек L2 Написать tcp-сервер, который играет в шахматы с другим tcp-сервером Реализовать на tcp сокетах переподключение к tcp серверу в случае потери соединения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |