spirit_1 5 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба Есть программа на Си под Расбери которая была переделанна под STM32f429 в финале необходимо добавить возможность чтения из bin файла данных которые потом по SPi залються во внешнее устройство оригинальный код такой uint8_t image_array[MAX_IMAGE_BYTES]; static struct ConstByteSpan read_in_image(char* image_file) { // Attempt to open the file FILE* file = fopen(image_file, "r"); assert(file != 0 && "Issue opening file"); fseek(file, 0, SEEK_END); size_t file_len = ftell(file); fseek(file, 0, SEEK_SET); int result = fread(image_array, file_len, 1, file); assert(result != 0 && "Issue reading file"); struct ConstByteSpan image = { .data = image_array, .length = file_len, }; fclose(file); return image; } хотелось бы как то подтянуть bin в проект и загрузить из него все в массив по аналогии выше в RAM. Памяти хватает. Можно ли это как то без лишнмих заморочек сделать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gridinp 3 13 декабря, 2023 Опубликовано 13 декабря, 2023 (изменено) · Жалоба почему бы просто не проинициализировать image_array данными, без всякого чтения? bin файл в данные можно преобразовать программкой xxd с опцией -i Изменено 13 декабря, 2023 пользователем gridinp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spirit_1 5 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба On 12/13/2023 at 12:26 PM, gridinp said: почему бы просто не проинициализировать image_array данными, без всякого чтения? bin файл в данные можно преобразовать программкой xxd с опцией -i там 140 кб, это не много? Вы имеете в виду конвертнуть вашей программой в массив текстового вида и просто скопировать в программу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 18 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба Можно даже без стороннего софта: https://github.com/graphitemaster/incbin Из всего репозитория нужен один заголовочный файл incbin.h, у себя в коде: #include "incbin.h" INCBIN(image, "image.bin"); Что сделает доступными переменные: const unsigned char g_imageData[]; // указатель на данные файла const unsigned int g_imageSize; // размер файла Посмотрите справку, там ещё настройки (типы, стили имён, префиксы, суффиксы) можно дефайнами менять. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gridinp 3 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба В 13.12.2023 в 14:33, spirit_1 сказал: там 140 кб, это не много? Вы имеете в виду конвертнуть вашей программой в массив текстового вида и просто скопировать в программу? ну да, можно засунуть в отдельный файл, так обычно ресурсы и делают, тот же qt, правда они zip-уют Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spirit_1 5 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба On 12/13/2023 at 12:37 PM, gridinp said: ну да, можно засунуть в отдельный файл, так обычно ресурсы и делают, тот же qt, правда они zip-уют нашел онлайн, сделал из моего файла массив , попробую всунуть в редактор https://notisrac.github.io/FileToCArray/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 18 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба В 13.12.2023 в 18:56, spirit_1 сказал: попробую всунуть в редактор Зачем мучить редактор, если incbin.h даёт тот же самый результат с меньшими усилиями (не нужно переводить файла в текст, копировать его из браузера)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spirit_1 5 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба On 12/13/2023 at 1:44 PM, arhiv6 said: Зачем мучить редактор, если incbin.h даёт тот же самый результат с меньшими усилиями (не нужно переводить файла в текст, копировать его из браузера)? ваш вариант безусловно лучше и правильнее , но я пока на быструю хочу проабгрэйтить фирмвэр . Если все пройдет как надо то для постоянки безусловно добавлю ваш вариант скажет так очень быстро) скопировал , вставил и запустил . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться