_Maks 0 5 мая, 2013 Опубликовано 5 мая, 2013 · Жалоба Тут к букварю надо обратиться. В моем букваре таких конструкций нету, а в гугле, что не напишешь, так он про С++ только и говорит. Что посоветуете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 5 мая, 2013 Опубликовано 5 мая, 2013 · Жалоба В моем букваре таких конструкций нету, а в гугле, что не напишешь, так он про С++ только и говорит. Что посоветуете? Конструкция более чем стандартная: *(uint32_t*)&g_ip &g_ip - берем адрес g_ip (uint32_t*) - преобразуем к указателю на uint32_t * - обращаемся к значению по новому указателю Все эти части в букваре точно должны быть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 5 мая, 2013 Опубликовано 5 мая, 2013 · Жалоба Например, DDI0337E_cortex_m3_r1p1_trm.pdf 8-35 (стр. 179): Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Maks 0 5 мая, 2013 Опубликовано 5 мая, 2013 · Жалоба Конструкция более чем стандартная: *(uint32_t*)&g_ip &g_ip - берем адрес g_ip (uint32_t*) - преобразуем к указателю на uint32_t * - обращаемся к значению по новому указателю Почему делается через указатель, а не напрямую? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 5 мая, 2013 Опубликовано 5 мая, 2013 · Жалоба Почему делается через указатель, а не напрямую? На этот вопрос Вам в свое время уже компилятор ответил: invalid type conversion Нельзя присвоить числу значение структуры. А вот через указатель можно, но при этом ответственность за допустимость и корректность такой операции целиком на программисте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Maks 0 6 мая, 2013 Опубликовано 6 мая, 2013 · Жалоба D имеющемся у меня коде, значение IP адреса присваивается с помощью функции определенной директивой define #define IP4_ADDR(ipaddr, a,b,c,d) \ (ipaddr)->addr = htonl(((u32_t)((a) & 0xff) << 24) | \ ((u32_t)((b) & 0xff) << 16) | \ ((u32_t)((c) & 0xff) << 8) | \ (u32_t)((d) & 0xff)) Присвоение статического адреса: IP4_ADDR(&ipaddr, IP_ADDR0, IP_ADDR1, IP_ADDR2, IP_ADDR3); IP4_ADDR(&netmask, NETMASK_ADDR0, NETMASK_ADDR1 , NETMASK_ADDR2, NETMASK_ADDR3); IP4_ADDR(&gw, GW_ADDR0, GW_ADDR1, GW_ADDR2, GW_ADDR3); Почему? Могу ли я просто написать вот так, когда присваиваю имеющийся динамический адрес в runtime: ipaddr.addr = g_ip.addr; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 6 мая, 2013 Опубликовано 6 мая, 2013 · Жалоба 1. Из-за эндианизма 2. Можете Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Maks 0 7 мая, 2013 Опубликовано 7 мая, 2013 (изменено) · Жалоба Можно ли написать вот так, чтобы не выдумывать имя для типа, который используется в одном экземпляре: static struct { u32_t build; u8_t login[16]; u8_t password[16]; } g_config; Компилятор ошибки не выдает, но я не припомню, чтобы где-то видел такого вида маневры. Изменено 7 мая, 2013 пользователем _Макс Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 7 мая, 2013 Опубликовано 7 мая, 2013 · Жалоба Нехилый парольчег :) На почти 80 мегов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 7 мая, 2013 Опубликовано 7 мая, 2013 · Жалоба Можно ли написать вот так, чтобы не выдумывать имя для типа... Можно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Maks 0 7 мая, 2013 Опубликовано 7 мая, 2013 (изменено) · Жалоба Как я понимаю, в scatter файле можно только для .o файлов задать место расположение. Я объявил и определил структуры в файле .h потому-что у меня там только данные. Каким изящным способом мне превратить его в индивидуальный .o файл для линкера? Изменено 7 мая, 2013 пользователем _Макс Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 7 мая, 2013 Опубликовано 7 мая, 2013 · Жалоба В скаттере объявите именованную область и адрес с диапазоном, куда это складывать В тексте можно пользоваться директивой __attribute__ ((section("NAMED_AREA"))) перед объявлением например, для складывания в SRAM не только RW данных, но и того, что нужно поместить именно туда (область RAMFUNC), скаттер будет примерно такого вида ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* LR_IROM1 0x20000000 0x00080000 { ; load region size_region ER_IROM1 0x20000000 0x00080000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x80000000 0x0000E000 { ; RW data *.o (RAMFUNC) .ANY (+RW +ZI) } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Maks 0 7 мая, 2013 Опубликовано 7 мая, 2013 (изменено) · Жалоба Почему LR_IROM1, содержит вложенные ER_IROM1 и RW_IRAM1? Будто область оперативки является вложенной по отношению ко флешу. Изменено 7 мая, 2013 пользователем _Макс Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Maks 0 9 мая, 2013 Опубликовано 9 мая, 2013 (изменено) · Жалоба У меня получился вот такой scetter file: LR_IROM1 0x08000000 0x00040000 { ; load region size_region ER_IROM1 0x08000000 0x00040000 {; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } ER_IROM2 0x803F800 { *(G_CONFIG +RO) } RW_IRAM1 0x20000000 0x00010000 {; RW data .ANY (+RW +ZI) } RW_IRAM2 0x2000FFF4 {; IP Data *(G_IP) } } Данные с атрибутом G_CONFIG после компиляции, в map файле отображаются с типом RW, несмотря на то, что размещены во флеше и RO указано явно. Что неправильно? Изменено 9 мая, 2013 пользователем _Макс Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 10 мая, 2013 Опубликовано 10 мая, 2013 · Жалоба const в описании не забыли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться