Kalyan
Свой-
Постов
121 -
Зарегистрирован
-
Посещение
-
да, вы правы. Первопричина найдена. Это как раз таки и DMA. Теряются байты с потока. Идет поток байт, заполняется буфер, дма останавливается, перекидает их со своего буфера в логику, потом опять начинает складывать байты с потока. Это узкое место в реализации, и с увеличением адреса буфера происходить задержка перед следующим включением дма, и оно теряет несколько байт (1 байт) с потока.
-
Я думаю Вы в корне не правы. Есть правила этого форума. Вот ссылкочка. В правилах не написано что это закрытый клуб професиональных дядек к которому нету доступа лицам коие такими не являются. На главной странице тоже нету предупреждений о запрете задавать те или иные вопросы (типо "Ламер - иди отсюдова! Не пиши здесь постов" и тд.). Согласитесь, ведь тогда упадет трафик и будут изымать плату за доступ к ресурсу. Это свободный ресурс, Вы не есть владельцем ресурса (я надеюсь) и у меня здесь столько же прав сколько и у Вас. Следовательно, должен быть конструктив, а не хамское отношение и попытка навязывать свои нарцисссические представления (так написано в правилах). Если вопрос уже здесь неоднократно обсуждался - заблокируйте мой пост с самого начала. Или же в пример могу привести http://www.cyberforum.ru. Там в такой ситуации не оскорбляют своего пользователя, а приводят ссылки на подобные темы. Модераторов прошу обратить внимание на нарушения правил данного форума, а именно - оскорбления в мой адрес.
-
Извините, а почему Ваш пост начинается с претензии? Хотите ЧСВ себе прокачать. Если Вы такой великий, зачем тратили свое драгоценное время чтоб отписать. Не царское это дело. У Вас наверняка есть дела поважнее. Это же форум, на то он и придуман чтоб здесь спрашивать и получать ответы. Давайте на главной странице большими буквами напишем "Читайте доки!!!" и все, и форум тогда и не надо. Еще бы рассказали как breakpoint юзать. На аватарках себе напишите "Читайте доки" чтоб не утруждать себя любимых ))
-
да, курить маны это выход с любой ситуации. Тут не поспоришь. Хотелось бы понять как это делает сам линкер, когда я ему ничего не указываю. У меня просто есть границы RAM и модули с переменными, по каким правилам будут определяться адреса. Такой инфы с наскока не смог найти. Может Вы примерно можете подсказать название мануала или главы где бы об этом было написано. Спасибо
-
да, я понимаю. По наследству досталась реализация сериал протокола. При сборке в моем проекте оно не работает. Заметил особенность - если приемный буфер этого протокола положить по младшим адресам - чудо, все работает )). Вот мне и в самом деле интересно стало как заставить линкер разложить переменные разных модулей в том или ином порядке. Какие правила использует линкер для этого и тд.
-
Может есть несколько базовых правил? Например в зависимости где идет первое обращение к модулю, в зависимости от размера и дт.
-
ну это да. а все таки?
-
ок. спасибо. По какому закону линкер назначает переменной адрес в рам памяти? Например у меня есть два файла module1.c и module2.c. В этих файлах соответственно переменные uint8_t module1 = 0; module2 = 0; Листинг: // module1.c uint8_t module1 = 0; void module1_init(void) { module1 = 1; } // module2.c uint8_t module2 = 0; void module2_init(void) { module2 = 2; } // main.c void main(void) { module1_init(); module2_init(); while(1) { } } Какую переменную линкер положит по меньшему адресу и что на это влияет?
-
Спасибо, работает вот так: define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; define symbol __ICFEDIT_region_RAM_end__ = 0x20017FFF; #pragma location= 0x20017BFF __no_init uint8_t my_arr[1024]; my_arr 0x2001'7bff 0x400 Data Gb main.o [1] Не возникнет ли проблем когда оперативная память заполнится до этого значения? Компилятор повторно по этому адресу уже не будет ложить остальных переменных?
-
Добрый день. У меня есть некоторый массив. Например uint8_t my_arr[10*1024]. Можно ли заставить компилятор положить этот массив в начало или конец оперативной памяти?
-
STM32f401 + uIPv 1.0 + Web Server
Kalyan ответил Kalyan тема в ARM, 32bit
#define UIP_CONNS 15 Этого количества хватает на все соединения которые идут от браузера. Посмотрел загрузку самого жирного файла через Wireshark. Идут ре-трасмиты со стороны железки. Но документ оно загружает. На сколько это нормально? -
STM32f401 + uIPv 1.0 + Web Server
Kalyan ответил Kalyan тема в ARM, 32bit
Физика, думаю, нормально работает, так как тот же веб сервер с примера - работает. Но там очень простой сайт. uIP взял чтоб сэкономить RAM память )) -
STM32f401 + uIPv 1.0 + Web Server
Kalyan опубликовал тема в ARM, 32bit
Добрый день. Собрал систему из Nucleo STM32f401 и Enc28j60 шилда. Использую FreeRtos и uIP v 1.0. Система завелась, работает DHCP и одно клиентское подключение по TCP. Адаптировал пример веб сервера с uIP стека. Добавил туда свои веб странички. На страничках подключено несколько изображений и скриптов. Соответственно когда браузер это все начинает тянуть вместе - не все ресурсы страницы подгружаются. Если кто то работал с uIP и этим примером веб сервера, у вас наблюдались такие проблемы? Может ли этот веб сервер асинхронно обрабатывать запросы? Буду благодарен если поделитесь своим опытом -
Да, извиняюсь, не нашел более подходящего места. Да, тут такая логика необходима: Центральное устройство периодически читает эту характеристику, там содержится статус некой операции. Если операция еще не завершилась, то эта характеристика должна быть пустая (data len = 0), то есть центральное устройство не должно получать вообще данных, а уже если операция завершилась, то в этой характеристике должен быть 2-х байтный статус. Вот исходя с этой логики хотел менять длину данных в характеристике.
-
Добрый день. Работаю с BLE - создаю BLE peripheral device. В GATT профайле определен один сервис в котором определена одна характеристика со свойством read. Эта характеристика описана двумя атрибутами (Declaration - uuid -0x2803 и само value c 16 байтным uuid). Вопрос относительно длины данных для атрибута value этой характеристики. Возможно ли как то указать что длина данных у этой характеристики переменная? Например инит длинна = 0 и максимальная длина = 2 байта.