第十七课(6)LCD编程——实现除法/调色板

本文详细介绍了在嵌入式系统中实现除法算法的过程,包括遇到的错误及其解决方法,以及如何在s3c2440芯片上初始化调色板。文章还探讨了在内核中找不到所需函数时,如何通过库函数进行解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们的逻辑还没有实现除法算法,因此先写一个确定值。
//int clkval = (double)HCLK/plcdparams->time_seq.vclk/2-1+0.5;
int clkval = 5;
这节就完成除法的实现

一、实现除法

韦老师的错误:
在这里插入图片描述
因为我的lib1funcs.S和老师不一样:

lcd/s3c2440_lcd_controller.o: In function `s3c2440_lcd_controller_init':
s3c2440_lcd_controller.c:(.text+0xb8): undefined reference to `__aeabi_i2f'
s3c2440_lcd_controller.c:(.text+0xcc): undefined reference to `__aeabi_fdiv'
s3c2440_lcd_controller.c:(.text+0xe0): undefined reference to `__aeabi_fdiv'
s3c2440_lcd_controller.c:(.text+0xf4): undefined reference to `__aeabi_fsub'
s3c2440_lcd_controller.c:(.text+0x100): undefined reference to `__aeabi_f2d'
s3c2440_lcd_controller.c:(.text+0x128): undefined reference to `__aeabi_dadd'
s3c2440_lcd_controller.c:(.text+0x13c): undefined reference to `__aeabi_d2iz'
Makefile:13: recipe for target 'all' failed
make: *** [all] Error 1

对于“undefined reference to” 的解决思路:
https://editor.youkuaiyun.com/md?articleId=105837021

我们在内核中没有找到,所以去库函数<math.h>查找
echo $PATH
/work/tools/gcc-3.4.5-glibc-2.3.6
找.a文件(静态链接库)

二、调色板

struct lcd_controller s3c2440_lcd_controller = {
	.name    = "s3c2440",
	.init    = s3c2440_lcd_controller_init,
	.enable  = s3c2440_lcd_controller_enalbe,
	.disable = s3c2440_lcd_controller_disable,
	.init_palette = s3c2440_lcd_controller_init_palette,
};

在s3c2440芯片手册上搜索“palette”:
在这里插入图片描述
NOTES:1. 0x4D000400 is Palette start address.

Palette Read/Write
When the user performs Read/Write operation on the palette, HSTATUS and VSTATUS of LCDCON5 register must be checked, for Read/Write operation is prohibited during the ACTIVE status of HSTATUS and VSTATUS.
设置调色板之前要先关闭LCD控制器

void s3c2440_lcd_controller_init_palette(void)
{
	volatile unsigned int *palette_base =  (volatile unsigned int *)0x4D000400;
	int i;

	int bit = LCDCON1 & (1<<0);

	/* LCDCON1'BIT 0 : 设置LCD控制器是否输出信号 */
	if (bit)
		LCDCON1 &= ~(1<<0);

	for (i = 0; i < 256; i++)
	{
		/* 低16位 : rgb565 */	
		*palette_base++ = i;  //因为没有找到规范的256gg 颜色的数组
	}

	if (bit)
		LCDCON1 |= (1<<0);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值