您尚未登录。

#1 全志 SOC » D1跑裸机程序运行速度极慢 » 昨天 16:04:06

PENPEN
回复: 0

最近在研究D1跑裸机程序,工程使用xboot大佬的例程https://whycan.com/t_6683.html/,发现运行很慢,遂使用逻辑分析仪简单测量运行速度,如下所示:

void delay_clk(uint32_t count)
{
    for (volatile uint32_t i = 0; i < count; i++) {
        __asm__ volatile ("nop");
    }
}

#define GPIO_INPUT      (0x00)
#define GPIO_OUTPUT     (0x01)

void xboot_main(void)
{
	//小灯
	d1_set_gpio_mode(GPIO_PORT_B, GPIO_PIN_12, GPIO_OUTPUT);
	d1_set_gpio_mode(GPIO_PORT_D,GPIO_PIN_11,GPIO_OUTPUT); 

	d1_set_gpio_val(GPIO_PORT_B, GPIO_PIN_12, 0);

	while(1)
	{
		d1_set_gpio_val(GPIO_PORT_D, GPIO_PIN_11, 1);
		delay_clk(1000);
		d1_set_gpio_val(GPIO_PORT_D, GPIO_PIN_11, 0);
		delay_clk(1000);
	}
}

delay_clk(1000)预计消耗4000-5000时钟周期(方式如有问题还望指出),测量得delay_clk(1000)实际耗时334us(忽略GPIO翻转时间),这显然远远达不到1Ghz的运行速度。
因为程序是在DDR中运行,所以初步怀疑是DDR配置问题,DDR型号是H5TQ4G63EFR。为了确认这个问题,考虑使用xfel工具将程序直接烧入SRAM A1的位置0x00020000,并在这个位置直接运行,于是修改link文件ram : org = 0x00020000, len = 32K,然后使用xfel工具烧录并直接在内存运行,测得耗时288us,快了一些,但速度还是不对。希望请教下我测量运行速度的方式是否有问题?程序运行慢可能的原因?

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn