[Horus] Bitmaps must be word aligned!
This commit is contained in:
@@ -743,10 +743,10 @@ if(ARCH STREQUAL ARM)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -o <OBJECT> <SOURCE>")
|
||||
|
||||
set(COMMON_FLAGS "-mcpu=${MCU} -mthumb -fomit-frame-pointer -fverbose-asm -Wa,-ahlms=opentx.lst -O${OPT} -gdwarf-2 -DHSE_VALUE=${HSE_VALUE} -fno-exceptions -fdata-sections -ffunction-sections ${WARNING_FLAGS}")
|
||||
set(COMMON_FLAGS "-mcpu=${MCU} -mthumb -fomit-frame-pointer -fverbose-asm -Wa,-ahlms=firmware.lst -O${OPT} -gdwarf-2 -DHSE_VALUE=${HSE_VALUE} -fno-exceptions -fdata-sections -ffunction-sections ${WARNING_FLAGS}")
|
||||
set(CMAKE_C_FLAGS "${COMMON_FLAGS} -Wimplicit")
|
||||
set(CMAKE_CXX_FLAGS "${COMMON_FLAGS}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-mcpu=${MCU} -mthumb -nostartfiles -lm -T${RADIO_SRC_DIRECTORY}/${LINKER_SCRIPT} -Wl,-Map=opentx.map,--cref,--no-warn-mismatch,--gc-sections")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-mcpu=${MCU} -mthumb -nostartfiles -lm -T${RADIO_SRC_DIRECTORY}/${LINKER_SCRIPT} -Wl,-Map=firmware.map,--cref,--no-warn-mismatch,--gc-sections")
|
||||
|
||||
if(PCB STREQUAL TARANIS)
|
||||
add_subdirectory(targets/${TARGET_DIR}/bootloader)
|
||||
@@ -808,6 +808,7 @@ endif()
|
||||
add_custom_target(firmware.lss
|
||||
COMMAND avr-objdump -h -S firmware.elf > firmware.lss
|
||||
DEPENDS firmware.elf
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
|
||||
if(CPU_FAMILY STREQUAL STM32)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.4 KiB |
@@ -200,31 +200,31 @@ const uint8_t * const LBM_MODEL_ICONS[] = {
|
||||
* Model selection screen bitmaps
|
||||
*/
|
||||
|
||||
const uint8_t LBM_LIBRARY_ICON[] = {
|
||||
const uint8_t LBM_LIBRARY_ICON[] __attribute__((aligned(32))) = {
|
||||
#include "mask_library.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_LIBRARY_SLOT[] = {
|
||||
const uint8_t LBM_LIBRARY_SLOT[] __attribute__((aligned(32))) = {
|
||||
#include "mask_library_slot.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_LIBRARY_CURSOR[] = {
|
||||
const uint8_t LBM_LIBRARY_CURSOR[] __attribute__((aligned(32))) = {
|
||||
#include "mask_library_category_index.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_SCORE0[] = {
|
||||
const uint8_t LBM_SCORE0[] __attribute__((aligned(32))) = {
|
||||
#include "mask_library_score_0.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_SCORE1[] = {
|
||||
const uint8_t LBM_SCORE1[] __attribute__((aligned(32))) = {
|
||||
#include "mask_library_score_1.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_STAR0[] = {
|
||||
const uint8_t LBM_STAR0[] __attribute__((aligned(32))) = {
|
||||
#include "mask_library_star_0.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_STAR1[] = {
|
||||
const uint8_t LBM_STAR1[] __attribute__((aligned(32))) = {
|
||||
#include "mask_library_star_1.lbm"
|
||||
};
|
||||
|
||||
@@ -232,30 +232,30 @@ const uint8_t LBM_STAR1[] = {
|
||||
* Other
|
||||
*/
|
||||
|
||||
const uint8_t LBM_ASTERISK[] = {
|
||||
const uint8_t LBM_ASTERISK[] __attribute__((aligned(32))) = {
|
||||
#include "asterisk.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_POINT[] = {
|
||||
const uint8_t LBM_POINT[] __attribute__((aligned(32))) = {
|
||||
#include "mask_point.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_CURVE_POINT[] = {
|
||||
const uint8_t LBM_CURVE_POINT[] __attribute__((aligned(32))) = {
|
||||
#include "mask_cvpoint.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_CURVE_POINT_CENTER[] = {
|
||||
const uint8_t LBM_CURVE_POINT_CENTER[] __attribute__((aligned(32))) = {
|
||||
#include "mask_cvpoint_center.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_CURVE_COORD_SHADOW[] = {
|
||||
const uint8_t LBM_CURVE_COORD_SHADOW[] __attribute__((aligned(32))) = {
|
||||
#include "mask_coord_shadow.lbm"
|
||||
};
|
||||
/*
|
||||
const uint8_t LBM_SHUTDOWN[] = {
|
||||
|
||||
const uint8_t LBM_SHUTDOWN[] __attribute__((aligned(32))) = {
|
||||
#include "shutdown.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_SLEEP[] = {
|
||||
const uint8_t LBM_SLEEP[] __attribute__((aligned(32))) = {
|
||||
#include "sleep.lbm"
|
||||
}; */
|
||||
};
|
||||
@@ -119,6 +119,7 @@ extern const uint8_t LBM_STAR0[];
|
||||
extern const uint8_t LBM_STAR1[];
|
||||
|
||||
// Other icons
|
||||
extern const uint8_t LBM_SPLASH[];
|
||||
extern const uint8_t LBM_ASTERISK[];
|
||||
extern const uint8_t LBM_POINT[];
|
||||
extern const uint8_t LBM_CURVE_POINT[];
|
||||
|
||||
+10
-10
@@ -870,17 +870,17 @@ inline void lcdDrawBitmapDMA(coord_t x, coord_t y, coord_t width, coord_t height
|
||||
#endif
|
||||
|
||||
#if !defined(BOOT)
|
||||
void lcdDrawBitmap(coord_t x, coord_t y, const uint8_t * bmp, coord_t offset, coord_t width, int scale)
|
||||
void lcdDrawBitmap(coord_t x, coord_t y, const uint8_t * bmp, coord_t offset, coord_t height, int scale)
|
||||
{
|
||||
int w = getBitmapWidth(bmp);
|
||||
int height = getBitmapHeight(bmp);
|
||||
int width = getBitmapWidth(bmp);
|
||||
int h = getBitmapHeight(bmp);
|
||||
|
||||
if (!width || width > w) {
|
||||
width = w;
|
||||
if (!height || height > h) {
|
||||
height = h;
|
||||
}
|
||||
|
||||
if (x+width > LCD_W) {
|
||||
width = LCD_W-x;
|
||||
if (x+height > LCD_W) {
|
||||
height = LCD_W-x;
|
||||
}
|
||||
|
||||
if (width == 0 || height == 0) {
|
||||
@@ -888,12 +888,12 @@ void lcdDrawBitmap(coord_t x, coord_t y, const uint8_t * bmp, coord_t offset, co
|
||||
}
|
||||
|
||||
if (scale == 0) {
|
||||
lcdDrawBitmapDMA(x, y, width, height, bmp+4);
|
||||
lcdDrawBitmapDMA(x, y, width, height, bmp + 4 + offset*width*2);
|
||||
}
|
||||
else if (scale < 0) {
|
||||
for (coord_t i=0, row=0; row<height; i+=1, row-=scale) {
|
||||
display_t * p = &displayBuf[(y+i)*LCD_W + x];
|
||||
const uint8_t * q = bmp + 4 + (row*w + offset) * 2;
|
||||
const uint8_t * q = bmp + 4 + (offset+row)*width*2;
|
||||
for (coord_t col=0; col<width; col-=scale) {
|
||||
lcdDrawPixel(p, *((uint16_t *)q));
|
||||
p++; q-=2*scale;
|
||||
@@ -904,7 +904,7 @@ void lcdDrawBitmap(coord_t x, coord_t y, const uint8_t * bmp, coord_t offset, co
|
||||
for (coord_t row=0; row<height; row++) {
|
||||
for (int i=0; i<scale; i++) {
|
||||
display_t * p = &displayBuf[(y+scale*row+i)*LCD_W + x];
|
||||
const uint8_t * q = bmp + 4 + (row*w + offset) * 2;
|
||||
const uint8_t * q = bmp + 4 + (offset+row)*width*2;
|
||||
for (coord_t col=0; col<width; col++) {
|
||||
for (int j=0; j<scale; j++) {
|
||||
lcdDrawPixel(p, *((uint16_t *)q));
|
||||
|
||||
@@ -303,7 +303,7 @@ inline int getBitmapScaledSize(int size, int scale)
|
||||
|
||||
int getBitmapScale(const uint8_t * bmp, int dstWidth, int dstHeight);
|
||||
int getTextWidth(const pm_char *s, int len=0, LcdFlags flags=0);
|
||||
void lcdDrawBitmap(coord_t x, coord_t y, const uint8_t * img, coord_t offset=0, coord_t width=0, int scale=0);
|
||||
void lcdDrawBitmap(coord_t x, coord_t y, const uint8_t * img, coord_t offset=0, coord_t height=0, int scale=0);
|
||||
void lcdDrawBitmapPattern(coord_t x, coord_t y, const uint8_t * img, LcdFlags flags=0, coord_t offset=0, coord_t width=0);
|
||||
|
||||
#define lcdSetRefVolt(...)
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
|
||||
#include "../../opentx.h"
|
||||
|
||||
const uint8_t LBM_SPLASH[] = {
|
||||
#include "../../bitmaps/horus/splash.lbm"
|
||||
const uint8_t LBM_SPLASH[] __attribute__((aligned(32))) = {
|
||||
#include "splash.lbm"
|
||||
};
|
||||
|
||||
#if defined(SPLASH)
|
||||
|
||||
@@ -324,16 +324,20 @@ int16_t gvarMenuItem(coord_t x, coord_t y, int16_t value, int16_t min, int16_t m
|
||||
}
|
||||
#endif
|
||||
|
||||
#define SLEEP_BITMAP_WIDTH 60
|
||||
#define SLEEP_BITMAP_HEIGHT 60
|
||||
void drawSleepBitmap()
|
||||
{
|
||||
/* lcdClear();
|
||||
lcdDrawBitmap(POPUP_X-80, POPUP_Y-30, LBM_SLEEP);
|
||||
lcdRefresh(); */
|
||||
lcdClear();
|
||||
lcdDrawBitmap((LCD_W-SLEEP_BITMAP_WIDTH)/2, (LCD_H-SLEEP_BITMAP_HEIGHT)/2, LBM_SLEEP);
|
||||
lcdRefresh();
|
||||
}
|
||||
|
||||
#define SHUTDOWN_BITMAP_WIDTH 60
|
||||
#define SHUTDOWN_BITMAP_HEIGHT 60
|
||||
void drawShutdownBitmap(uint8_t index)
|
||||
{
|
||||
/*lcdClear();
|
||||
lcdDrawBitmap(76, 2, LBM_SHUTDOWN, index * 60, 60);
|
||||
lcdRefresh();*/
|
||||
lcdClear();
|
||||
lcdDrawBitmap((LCD_W-SHUTDOWN_BITMAP_WIDTH)/2, (LCD_H-SHUTDOWN_BITMAP_HEIGHT)/2, LBM_SHUTDOWN, index*SHUTDOWN_BITMAP_WIDTH, SHUTDOWN_BITMAP_WIDTH);
|
||||
lcdRefresh();
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ Clipboard clipboard;
|
||||
#endif
|
||||
|
||||
#if (defined(PCBTARANIS) || defined(PCBHORUS)) && defined(SDCARD)
|
||||
uint8_t modelBitmap[MODEL_BITMAP_SIZE];
|
||||
uint8_t modelBitmap[MODEL_BITMAP_SIZE] __attribute__((aligned(32)));
|
||||
bool loadModelBitmap(char * name, uint8_t * bitmap)
|
||||
{
|
||||
uint8_t len = zlen(name, LEN_BITMAP_NAME);
|
||||
|
||||
Reference in New Issue
Block a user