您尚未登录。

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

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,134
积分: 1086.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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,234
积分: 9197

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

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





离线

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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,234
积分: 9197

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,134
积分: 1086.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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,234
积分: 9197

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

Calcium 说:

有玩过全志的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 说:

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

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

离线

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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,234
积分: 9197

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

ippen 说:
Calcium 说:

好的 谢谢晕哥,   哪里有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吗?为什么数据手册和代码对不上?

晕哥 说:
ippen 说:
Calcium 说:

好的 谢谢晕哥,   哪里有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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,234
积分: 9197

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

ippen 说:
晕哥 说:
ippen 说:

我们现在用的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吗?为什么数据手册和代码对不上?

晕哥 说:
ippen 说:
晕哥 说:

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

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

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


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

离线

页脚

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

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