您尚未登录。

楼主 #1 2018-08-26 12:44:07

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,140
积分: 1092.5

F1C600就是F1C100S吗?为什么数据手册和代码对不上?

研究了下驱动的时候发现寄存器对不上,比如framebuffer驱动用到了debe的offset为0x850和0x860两个寄存器,但是F1C600手册里定义不但不一样而且没有0x860这个寄存器
我用的手册是nano官网写的:
Nano 数据手册: http://odfef978i.bkt.clouddn.com/Nano%20F600%20User%20Manual.pdf

离线

#2 2018-08-28 16:53:47

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,481
积分: 9207

Re: F1C600就是F1C100S吗?为什么数据手册和代码对不上?

应该是同一个, 全志马甲多,很有可能文档写漏了。





在线

#3 2018-08-28 17:11:36

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,481
积分: 9207

Re: F1C600就是F1C100S吗?为什么数据手册和代码对不上?

/opt/c600/linux-3.10/drivers/video/sunxi/disp/de_bsp/de/ebios/de_be.h

#ifndef __DE_BE_H__
#define __DE_BE_H__

#include "ebios_de.h"

/back-end registers offset/
#define DE_BE_MODE_CTL_OFF 0x800 /back-end mode control register offset/
#define DE_BE_COLOR_CTL_OFF 0x804 /back-end color control register offset/
#define DE_BE_DISP_SIZE_OFF 0x808 /1663 do not has this reg: back-end display size setting register offset/
#define DE_BE_ERROR_CORRECTION 0x80c /1663 do not has this reg/
#define DE_BE_LAYER_SIZE_OFF 0x810 /back-end layer size register offset/
#define DE_BE_LAYER_CRD_CTL_OFF 0x820 /back-end layer coordinate control register offset/
#define DE_BE_FRMBUF_WLINE_OFF 0x840 /back-end frame buffer line width register offset/
#define DE_BE_FRMBUF_LOW32ADDR_OFF 0X850 /back-end frame buffer low 32bit address register offset/
#define DE_BE_FRMBUF_HIGH4ADDR_OFF 0X860 /1663 do not has this reg: back-end frame buffer high 4bit address register offset/
#define DE_BE_FRMBUF_CTL_OFF 0X870 /back-end frame buffer control register offset/
#define DE_BE_CLRKEY_MAX_OFF 0x880 /back-end color key max register offset/
#define DE_BE_CLRKEY_MIN_OFF 0x884 /back-end color key min register offset/
#define DE_BE_CLRKEY_CFG_OFF 0x888 /back-end color key configuration register offset/
#define DE_BE_LAYER_ATTRCTL_OFF0 0x890 /back-end layer attribute control register0 offset/
#define DE_BE_LAYER_ATTRCTL_OFF1 0x8a0 /back-end layer attribute control register1 offset/
#define DE_BE_DLCDP_CTL_OFF 0x8b0 /1663 do not has this reg: direct lcd pipe control register offset/
#define DE_BE_DLCDP_FRMBUF_ADDRCTL_OFF 0x8b4 /1663 do not has this reg: direct lcd pipe frame buffer address control register offset/
#define DE_BE_DLCDP_CRD_CTL_OFF0 0x8b8 /1663 do not has this reg: direct lcd pipe coordinate control register0 offset/
#define DE_BE_DLCDP_CRD_CTL_OFF1 0x8bc /1663 do not has this reg: direct lcd pipe coordinate control register1 offset/
#define DE_BE_INT_EN_OFF 0x8c0 /1663 do not has this reg/
#define DE_BE_INT_FLAG_OFF 0x8c4 /1663 do not has this reg/
#define DE_BE_HWC_CRD_CTL_OFF 0x8d8 /hardware cursor coordinate control register offset/
#define DE_BE_HWC_FRMBUF_OFF 0x8e0 /hardware cursor framebuffer control/
#define DE_BE_WB_CTRL_OFF 0x8f0 /back-end write back control /
#define DE_BE_WB_ADDR_OFF 0x8f4 /back-end write back address/
#define DE_BE_WB_LINE_WIDTH_OFF 0x8f8 /back-end write back buffer line width/

#define DE_BE_SPRITE_EN_OFF 0x900 /1663 do not has this reg: sprite enable/
#define DE_BE_SPRITE_FORMAT_CTRL_OFF 0x908 /1663 do not has this reg: sprite format control/

#define DE_BE_SPRITE_ALPHA_CTRL_OFF 0x90c /1663 do not has this reg: sprite alpha control/
#define DE_BE_IYUVCTRL_REG 0x920 /DE backend input YUV channel control register/
#define DE_BE_IYUVADD_REG 0x930 /0x930~0x938: DE backend YUV channel frame buffer address register/
#define DE_BE_IYUVLINEWIDTH_REG 0x940 /de backend YUV channel buffer line width register/
#define DE_BE_YGCOEF 0x950 /de backend Y/G coefficient register/
#define DE_BE_YGCONS_REG 0x95c /de backend Y/G constant register/
#define DE_BE_URCOEF_REG 0x960 /de backend U/R coefficient register/
#define DE_BE_URCONS_REG 0x96c /de backend U/R constant reigster/
#define DE_BE_VBCOEF_REG 0x970 /de backend V/B coefficient register/
#define DE_BE_VBCONS_REG 0x97c /de backend V/B constant register/

#define DE_BE_SPRITE_POS_CTRL_OFF 0xa00 /1663 do not has this reg: sprite single block coordinate control/
#define DE_BE_SPRITE_ATTR_CTRL_OFF 0xb00 /1663 do not has this reg: sprite single block attribute control/
#define DE_BE_SPRITE_ADDR_OFF 0xc00 /1663 do not has this reg: sprite single block address setting SRAM array/
#define DE_BE_SPRITE_LINE_WIDTH_OFF 0xd00
#define DE_BE_YUV_CTRL_OFF 0x920 /back-end input YUV channel control/
#define DE_BE_YUV_ADDR_OFF 0x930 /back-end YUV channel frame buffer address/
#define DE_BE_YUV_LINE_WIDTH_OFF 0x940 /back-end YUV channel buffer line width/
#define DE_BE_YG_COEFF_OFF 0x950 /back Y/G coefficient/
#define DE_BE_YG_CONSTANT_OFF 0x95c /back Y/G constant/
#define DE_BE_UR_COEFF_OFF 0x960 /back U/R coefficient/
#define DE_BE_UR_CONSTANT_OFF 0x96c /back U/R constant/
#define DE_BE_VB_COEFF_OFF 0x970 /back V/B coefficient/
#define DE_BE_VB_CONSTANT_OFF 0x97c /back V/B constant/
#define DE_BE_OUT_COLOR_CTRL_OFF 0x9c0
#define DE_BE_OUT_COLOR_R_COEFF_OFF 0x9d0
#define DE_BE_OUT_COLOR_R_CONSTANT_OFF 0x9dc
#define DE_BE_OUT_COLOR_G_COEFF_OFF 0x9e0
#define DE_BE_OUT_COLOR_G_CONSTANT_OFF 0x9ec
#define DE_BE_OUT_COLOR_B_COEFF_OFF 0x9f0
#define DE_BE_OUT_COLOR_B_CONSTANT_OFF 0x9fc

#define DE_BE_REG_ADDR_OFF 0x0

#define DE_BE_HWC_PALETTE_TABLE_ADDR_OFF 0x4c00 /back-end hardware cursor palette table address/
#define DE_BE_INTER_PALETTE_TABLE_ADDR_OFF 0x5000 /back-end internal framebuffer or direct lcd pipe palette table/
#define DE_BE_SPRITE_PALETTE_TABLE_ADDR_OFF 0x4000 /back-end sprite palette table address/
#define DE_BE_HWC_MEMORY_ADDR_OFF 0x4800 /back-end hwc pattern memory block address/
#define DE_BE_INTERNAL_FB_ADDR_OFF 0x4000 /back-end internal frame bufffer address definition/
#define DE_BE_GAMMA_TABLE_ADDR_OFF 0x4400 /back-end gamma table address/
#define DE_BE_PALETTE_TABLE_ADDR_OFF 0x5000 /back-end palette table address/
#define DE_FE_REG_ADDR_OFF 0x20000
#define DE_SCAL2_REG_ADDR_OFF 0x40000

#define DE_BE_REG_SIZE 0x1000
#define DE_BE_HWC_PALETTE_TABLE_SIZE 0x400 /back-end hardware cursor palette table size/
#define DE_BE_INTER_PALETTE_TABLE_SIZE 0x400 /back-end internal framebuffer or direct lcd pipe palette table size in bytes/
#define DE_BE_SPRITE_PALETTE_TABLE_SIZE 0x400 /back-end sprite palette table size in bytes/
#define DE_BE_HWC_PATTERN_SIZE 0x400
#define DE_BE_INTERNAL_FB_SIZE 0x1800 /**back-end internal frame buffer size in byte*/
#define DE_BE_GAMMA_TABLE_SIZE 0x400 /back-end gamma table size/
#define DE_BE_PALETTE_TABLE_SIZE 0x400 /back-end palette table size in bytes/
#define DE_FE_REG_SIZE 0x1000
#define DE_SCAL2_REG_SIZE 0x1000

extern __u32 image_reg_base[2];
#define DE_BE_GET_REG_BASE(sel) (image_reg_base[sel])

#define DE_WUINT8(offset,value) (((volatile __u8 )(offset))=(value))
#define DE_RUINT8(offset) (((volatile __u8 )(offset)))
#define DE_WUINT16(offset,value) (((volatile __u16 )(offset))=(value))
#define DE_RUINT16(offset) (((volatile __u16 )(offset)))
#define DE_WUINT32(offset,value) (((volatile __u32 )(offset))=(value))
#define DE_RUINT32(offset) (((volatile __u32 )(offset)))
#define DE_WUINT8IDX(offset,index,value) ((((volatile __u8 )(offset+index)))=(value))
#define DE_RUINT8IDX(offset,index) (((volatile __u8 )(offset+index)))
#define DE_WUINT16IDX(offset,index,value) (((volatile __u16 )(offset+2*index))=(value))
#define DE_RUINT16IDX(offset,index) ( ((volatile __u16 )(offset+2*index)))
#define DE_WUINT32IDX(offset,index,value) (((volatile __u32 )(offset+4*index))=(value))
#define DE_RUINT32IDX(offset,index) (((volatile __u32 )(offset+4*index)))

#define DE_BE_WUINT8(sel,offset,value) DE_WUINT8(DE_BE_GET_REG_BASE(sel)+(offset),value)
#define DE_BE_RUINT8(sel,offset) DE_RUINT8(DE_BE_GET_REG_BASE(sel)+(offset))
#define DE_BE_WUINT16(sel,offset,value) DE_WUINT16(DE_BE_GET_REG_BASE(sel)+(offset),value)
#define DE_BE_RUINT16(sel,offset) DE_RUINT16(DE_BE_GET_REG_BASE(sel)+(offset))
#define DE_BE_WUINT32(sel,offset,value) DE_WUINT32(DE_BE_GET_REG_BASE(sel)+(offset),value)
#define DE_BE_RUINT32(sel,offset) DE_RUINT32(DE_BE_GET_REG_BASE(sel)+(offset))
#define DE_BE_WUINT8IDX(sel,offset,index,value) DE_WUINT8IDX(DE_BE_GET_REG_BASE(sel)+(offset),index,value)
#define DE_BE_RUINT8IDX(sel,offset,index) DE_RUINT8IDX(DE_BE_GET_REG_BASE(sel)+(offset),index)
#define DE_BE_WUINT16IDX(sel,offset,index,value) DE_WUINT16IDX(DE_BE_GET_REG_BASE(sel)+(offset),index,value)
#define DE_BE_RUINT16IDX(sel,offset,index) DE_RUINT16IDX(DE_BE_GET_REG_BASE(sel)+(offset),index)
#define DE_BE_WUINT32IDX(sel,offset,index,value) DE_WUINT32IDX(DE_BE_GET_REG_BASE(sel)+(offset),index,value)
#define DE_BE_RUINT32IDX(sel,offset,index) DE_RUINT32IDX(DE_BE_GET_REG_BASE(sel)+(offset),index)

extern __u32 csc_tab[192];
extern __u32 image_enhance_tab[256];
extern __u32 fir_tab[1792];
extern __u32 fir_tab_video[1792];

#endif

看了一下和手册 Allwinner_F1C600_User_Manual_V1.0.pdf确实对不上号, 某些寄存器驱动有,但是手册却没有。





在线

楼主 #4 2018-08-28 19:50:49

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,140
积分: 1092.5

Re: F1C600就是F1C100S吗?为什么数据手册和代码对不上?

哎,就是麻烦。要是nxp和microchip便宜点我肯定转移目标了

离线

#5 2018-10-29 16:18:03

Calcium
会员
注册时间: 2018-10-29
已发帖子: 10
积分: 10

Re: F1C600就是F1C100S吗?为什么数据手册和代码对不上?

有玩过全志的F1C600的么? F1C600s与F1C600的sdk不通用啊?

离线

#6 2018-10-29 16:20:03

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,481
积分: 9207

Re: F1C600就是F1C100S吗?为什么数据手册和代码对不上?

Calcium wrote:

有玩过全志的F1C600的么? F1C600s与F1C600的sdk不通用啊?

据说,如果按照开源的主线u-boot/主线linux玩法,那么 F1C600 == F1C100s
按官方bsp玩法 F1C600 != F1C100s
官方bsp 里面 boot0 限制了什么什么.





在线

#7 2018-10-29 17:58:07

Calcium
会员
注册时间: 2018-10-29
已发帖子: 10
积分: 10

Re: F1C600就是F1C100S吗?为什么数据手册和代码对不上?

好的 谢谢晕哥, 哪里有F1C600官方BSP的uboot编译源码么?

离线

#8 2018-10-29 18:08:51

ippen
会员
注册时间: 2018-07-22
已发帖子: 345
积分: 339.5

Re: F1C600就是F1C100S吗?为什么数据手册和代码对不上?

Calcium wrote:

好的 谢谢晕哥, 哪里有F1C600官方BSP的uboot编译源码么?

我们现在用的bsp都是写着C600的
bsp里面的build.sh没有编译u-boot,bsp默认使用一个已经编译好的文件,我还想找编译uboot的手段呢

离线

#9 2018-10-29 18:19:58

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,481
积分: 9207

Re: F1C600就是F1C100S吗?为什么数据手册和代码对不上?

ippen wrote:

Calcium wrote:

好的 谢谢晕哥, 哪里有F1C600官方BSP的uboot编译源码么?

我们现在用的bsp都是写着C600的
bsp里面的build.sh没有编译u-boot,bsp默认使用一个已经编译好的文件,我还想找编译uboot的手段呢

对哦,那个bsp就叫c600,看来应该是通用的了。
uboot的源码就在那个目录下面,是可以编译成功的,
boot0(spl)没有源码,uboot里面也只有几个文件没有源码,库的形式提供。





在线

#10 2018-10-29 23:48:21

ippen
会员
注册时间: 2018-07-22
已发帖子: 345
积分: 339.5

Re: F1C600就是F1C100S吗?为什么数据手册和代码对不上?

晕哥 wrote:

ippen wrote:

Calcium wrote:

好的 谢谢晕哥, 哪里有F1C600官方BSP的uboot编译源码么?

我们现在用的bsp都是写着C600的
bsp里面的build.sh没有编译u-boot,bsp默认使用一个已经编译好的文件,我还想找编译uboot的手段呢

对哦,那个bsp就叫c600,看来应该是通用的了。
uboot的源码就在那个目录下面,是可以编译成功的,
boot0(spl)没有源码,uboot里面也只有几个文件没有源码,库的形式提供。

晕哥编译过bsp的uboot吗?怎样编译的?哪几个文件是库?

离线

#11 2018-10-30 07:18:22

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,481
积分: 9207

Re: F1C600就是F1C100S吗?为什么数据手册和代码对不上?

ippen wrote:

晕哥 wrote:

ippen wrote:

我们现在用的bsp都是写着C600的
bsp里面的build.sh没有编译u-boot,bsp默认使用一个已经编译好的文件,我还想找编译uboot的手段呢

对哦,那个bsp就叫c600,看来应该是通用的了。
uboot的源码就在那个目录下面,是可以编译成功的,
boot0(spl)没有源码,uboot里面也只有几个文件没有源码,库的形式提供。

晕哥编译过bsp的uboot吗?怎样编译的?哪几个文件是库?

编译成功了,没有运行,当时没有做笔记。





在线

#12 2019-01-15 01:44:25

qinxiongxu
会员
注册时间: 2018-12-13
已发帖子: 88
积分: 75.5

Re: F1C600就是F1C100S吗?为什么数据手册和代码对不上?

晕哥 wrote:

ippen wrote:

晕哥 wrote:

对哦,那个bsp就叫c600,看来应该是通用的了。
uboot的源码就在那个目录下面,是可以编译成功的,
boot0(spl)没有源码,uboot里面也只有几个文件没有源码,库的形式提供。

晕哥编译过bsp的uboot吗?怎样编译的?哪几个文件是库?

编译成功了,没有运行,当时没有做笔记。

我的也可以编译成功,但是是2011的版本,不是2014的,且不能用。

离线

页脚

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

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


东莞哇酷科技有限公司开发