vit496
Участник*-
Постов
68 -
Зарегистрирован
-
Посещение
-
Вроде для NB-IoT специальный тариф должен быть. Тариф от смартфона точно не пойдет. Без карточки или с карточкой не для NB-IOT выдает +CSQ 99,99
-
А тот источник, что 12В, он нормальной мощности?
-
что за 1024?
-
Я видел статью, пробовал менять, но никаких изменений, как у автора, не заметил.
-
А зачем его устанавливать? Я нигде в примерах от GD не видел использование этого бита.
-
Как сказать модему, чтобы остановил этот поток, поделитесь пожалуйста.
-
Непонятна ваша фраза. Это данные от модема на пине TX. Остановить их можно подняв CTS
-
открыли html страничку используя TCP стек модема и получили поток данных +RECEIVE,3,1348: ..... data .... +RECEIVE,3,1400: ..... data .... +RECEIVE,3,803: ..... data ....
-
Например, принять и сохранить во внешнюю флеш 100кб файл.
-
да как-то не было проблем. Делаю так *.icf: define region sect_region = mem:[from 0x08070000 to 0x08077FFF]; place in sect_region { section sect }; *.c: #define fix_rom _Pragma("location=\"sect\"") fix_rom const uint8_t arr[] = { .... }; читать uint32_t x = *(volatile uint32_t*) 0x08070000;
-
А как вы собираетесь изменять значения, после того, как удастся разместить во FLASH? Вроде как не даст компилятор такое сделать? calInfo.general.calibrated = 1
-
Да, с нулем конечно неудачный пример. uint32_t arr[] = { 1, 2, 3, 4 } - разместит во FLASH 1,2,3,4, при инициализации переложит в ОЗУ.
-
отсутствие const
-
const uint32_t a = 0; - разместит во FLASH uint32_t b = 0; - разместит во FLASH, при инициализации переложит в ОЗУ Вы хотите заставить компилятор разместить изменяемую переменную во FLASH. Вряд ли это получится. uint32_t x = *(__IO uint32_t*) 0x08001000;
-
Методом проб и ошибок и файла EWARM_DevelopmentGuide.ENU.pdf вроде получилось сделать. В .icf файл нужно добавить две секции - откуда и куда будет копирование. Название секции во Flash, из которой будет происходить копирование, должно отличаться суффиксом "_init" define region sect_i_region = mem:[from 0x08070000 to 0x08077FFF]; place in sect_i_region { section sect_init }; define region sect_region = mem:[from 0x20020000 to 0x20027FFF]; place in sect_region { section sect }; initialize manually { section sect }; В коде нужно добавить функцию копирования: #pragma section = "sect" #pragma section = "sect_init" void DoInit() { char * from = __section_begin("sect_init"); char * to = __section_begin("sect"); memcpy(to, from, __section_size("sect")); } void main () { DoInit(); .... } #define slowrom _Pragma("location=\"sect\"") slowrom void some_func () { .... } slowrom const uint8_t str[] = "xxxxx"; Теперь, для всех функций и констант, при объявлении которых будет указано slowrom, будет применено копирование согласно заданным секциям.