Я столкнулся с большой проблемой. В настоящее время я участвую в сэндвич-курсе и самостоятельно изучаю, как разрабатывать программное обеспечение для встроенной системы - как это бывает, на плате open1788.
Я планировал реализовать функцию двойной буферизации, потому что на моем ЖК-экране можно увидеть мерцание. Фигуры можно просматривать во время рисования!
При двойной буферизации перерисовка всего экрана происходит достаточно быстро. Может быть, мне следует покопаться в управлении отсечением, чтобы мне нужно было перерисовывать только те части экрана, которые должны быть? Но это не вопрос.
Итак, я написал пару функций для обработки выбора варианта двойной буферизации. Если я не хочу, чтобы программа использовала двойную буферизацию, то я не буду выделять для нее память; в противном случае я делаю.
Проблема в том, что пространство по умолчанию, выделенное для кучи, достигает 1024 байт. А мой временный буфер имеет длину 261120 байт! (481 пиксель в ширину на 272 пикселя в высоту, каждый 16bpp).
Как следствие, malloc вернул NULL.
Первое решение, которое я принял, — поставить статический буфер, я имею в виду:
static WORD s_double_buf[481*272];
Но очевидным недостатком является то, что он все равно выделяется, даже если вы не используете двойную буферизацию.
Второе решение — отредактировать файл конфигурации, чтобы увеличить кучу, заменив 1024 байта, например, на 1048576 байт (0x100000). Мне не нравится это решение, так как я должен сосредоточиться на экономии места в памяти.
Может быть, мне ужасно не хватает навыков встроенного программирования? Какое лучшее решение в соответствии с этим? Как я мог добиться прогресса? Я не говорю вам о своей беспорядочной способности читать и копаться в даташитах.
Я был бы очень признателен, если бы кто-нибудь мог предоставить мне ссылки для начинающих, в основном для платы, на которой я программирую.
Заранее спасибо!