您尚未登录。

楼主 # 2022-06-14 17:56:30

nice
会员
注册时间: 2021-01-02
已发帖子: 13
积分: 22

基于f1c200s运行th_thread的学习记录.

首先根据LinjieGuo的帖子https://whycan.com/t_7659.html做移植.
1,从本贴https://whycan.com/t_3958.html下载[allwinner_tina_prj_v1.zip]
2.解压 [allwinner_tina_prj_v1.zip] ,到  rt-thread-gitee_master\bsp目录下。
3.修改main.c去掉uart2部分,注释掉//Sys_Servs_Init();//Services
4.打开ENV,转换目录到rt-thread-gitee_master\bsp目录下输入menuconfig。去掉SDIO支持,我不用SD卡.
5编译RTT,输入scons。得到未经修饰的rtthread.bin
6执行脚本文件,[flashtospi.bat],这个脚本用于修饰rtthread.bin,增加魔术头,并下载bin文件到flash中。

最近编辑记录 nice (2022-06-15 16:33:08)

离线

楼主 #1 2022-06-15 09:28:36

nice
会员
注册时间: 2021-01-02
已发帖子: 13
积分: 22

Re: 基于f1c200s运行th_thread的学习记录.

接入uart1接口,上电显示:
\ | /
- RT -     Thread Operating System
/ | \     4.1.1 build Jun 15 2022 09:23:43
2006 - 2022 Copyright by RT-Thread team
[32m[I/SFUD] Find a Winbond flash chip. Size is 8388608 bytes.[0m
[32m[I/SFUD] gd25qxx flash device is initialize success.[0m
[32m[I/SFUD] Probe SPI flash gd25qxx by SPI device spi00 success.[0m
Start...
periph_get_pll_clk:600000000
cpu_get_clk:408000000
ahb_get_clk:200000000
apb_get_clk:100000000
[Thread]GUIThread Created.
msh />

离线

楼主 #2 2022-06-16 16:25:47

nice
会员
注册时间: 2021-01-02
已发帖子: 13
积分: 22

Re: 基于f1c200s运行th_thread的学习记录.

1,更改LV的像素设置
2.更改drv_fb.c里的像素时钟设置
关于 :pixel_clock_hz
static void f1c100s_tcon_set_mode(lcd_cfg_Struct * pdat)
   val = f1c100s_tcon_clk_get_rate() / pdat->pixel_clock_hz;
   
    write32((uint32_t)&tcon->tcon0_dclk, (0xf << 28) | (val << 0));
    struct f1c100s_tcon_reg_t * tcon = (struct f1c100s_tcon_reg_t *)F1C100S_TCON_BASE;
    #define F1C100S_TCON_BASE        (0x01c0c000)

离线

楼主 #3 2022-06-16 16:30:38

nice
会员
注册时间: 2021-01-02
已发帖子: 13
积分: 22

Re: 基于f1c200s运行th_thread的学习记录.

1.jpg
Allwinner_F1C200s_User_Manual_V1.1.pdf

最近编辑记录 nice (2022-06-16 16:32:43)

离线

楼主 #4 2022-06-16 16:52:54

nice
会员
注册时间: 2021-01-02
已发帖子: 13
积分: 22

Re: 基于f1c200s运行th_thread的学习记录.

uint32_t tcon0_dclk;            /* 0x44 */
2.jpg
根据:  write32((uint32_t)&tcon->tcon0_dclk, (0xf << 28) | (val << 0));
lclk_en:4'hf

DCLKDIV: dot clock divider
Tdclk = Tsclk * DCLKDIV
Note:
1.if dclk1&dclk2 used,5<DCLKDIV <96
2.if dclk only,DCLKDIV >=4 || DCLKDIV=2


f1c100s_tcon_clk_get_rate()     
->  video_get_pll_clk()
->  PLL_VIDEO_CTRL_REG    0x0010  PLL_VIDEO Control Register 查看倍频情况.
这边是获取了,查一下,设置部分找到:
void rt_hw_board_init(void)
{
   
    video_set_pll_clk(198000000);

最近编辑记录 nice (2022-06-16 17:03:22)

离线

楼主 #5 2022-06-16 17:33:10

nice
会员
注册时间: 2021-01-02
已发帖子: 13
积分: 22

Re: 基于f1c200s运行th_thread的学习记录.

感谢:达克罗德和staunchheart
请参考https://whycan.cn/t_2135.html
同时参考https://whycan.cn/t_3611.html
RTT下sys-clock.c
    write32(F1C100S_CCU_BASE + CCU_PLL_VIDEO_CTRL,0x81004103);// 0x81004107);//

离线

楼主 #6 2022-06-17 09:46:57

nice
会员
注册时间: 2021-01-02
已发帖子: 13
积分: 22

Re: 基于f1c200s运行th_thread的学习记录.

3.jpg找到频的dclk,对应pixel_clock_hz改之/


void sys_clock_init(void)
->write32(F1C100S_CCU_BASE + CCU_PLL_VIDEO_CTRL, 0x81003b03);

void rt_hw_board_init(void)
->video_set_pll_clk(360000000);//(198000000);
时钟输出=24000000*(0x3b+1)/(0x03+1)=360Mhz
drv_fb.c
->lcd_cfg_Struct lcd_cfg={
    .pixel_clock_hz=60000000, //9210200,

最近编辑记录 nice (2022-06-17 10:29:25)

离线

页脚

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

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