Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/58: Рейтинг темы: голосов - 58, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 257
1

Портирую TCP/IP стек для STM8L в IARe

26.10.2011, 16:08. Показов 11146. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Стала задача прикрутить 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.10.2011, 16:08
Ответы с готовыми решениями:

Стек протоколов TCP/IP для сети из трех ПК
Привет, мне нужна помощь! Используя возможности стека протоколов TCP/IP организовать...

стек Modbus RTU TCP - для МК STM32F / FreeRTOS
стек Modbus RTU / TCP - для МК STM32F / FreeRTOS Есть готовая материнка с процессором...

Посоветуйте TCP/IP стек
Привет! Мне нужно сделать веб-сервер на STM32+ENC28J60. DHCP не нужен, нужно просто отдавать...

TCP/IP стек под AVR
Всем доброго времени суток. Не могли бы вы подсказать пожалуйста, где можно найти уже готовые...

8
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;
3.
Код
#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
Но почему то получаю только пинг, побывал запустить test_OKworks.c, но почему то страничку не отображает.
Вот проект в 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
Недавно пришлось портировать проект МикроМеню на AVR под STM8.
Там тоже были теже заморочки с pgmsposi.h.
А как боролись с
-> Step into source...Error: stopped on write protection at 0x808d
Компилируется, но не выполняется.
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2013, 08:13
Помогаю со студенческими работами здесь

Работа с модемом Wismo228 (SIM карта, TCP/IP стек, активация)
Здравствуйте) В даташите на этот модуль используются микросхемы ESDA6V1SC6 и DALC208SC6 для...

Описать и реализовать класс Стек, моделирующий массивом стек, для хранения любых объектов
ПОЖАЛУЙСТА ПОМОГИТЕ РАЗОБРАТЬСЯ С ЗАДАЧЕЙ НА JAVA!!! только начинаю изучать этот язык. буду очень...

Вывести стек CE - набор вершин цикла Эйлера и стек CTEK - все проходы для достижения
Доброго времени суток. Нужно реализовать следующий алгоритм: На входе: вершина из матрицы...

Сцена зависает при запуске TCP-клиента, когда он подключен к TCP - серверу, при этом TCP-клиент полностью функционирует
Проблема описана в заголовке, и хотелось бы услышать ваше мнение, о том как можно решить проблему....

Сформировать новый стек, состоящий из элементов, входящих в стек L1 но не входящих в стек L2
3) Написать приложение, которое по двум стекам L1, L2 формирует новый стек, состоящий из элементов,...

Написать tcp-сервер, который играет в шахматы с другим tcp-сервером
Здравствуй, помогите в написании программы: Написать tcp-сервер, который играет в шахматы с...

Реализовать на tcp сокетах переподключение к tcp серверу в случае потери соединения
Всем привет, подскажите как можно реализовать на tcp сокетах переподключение к tcp серверу в случае...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru