开源版本敬请期待
NDA版本请登录客户服务平台下载
awwwwa 发布的帖子
-
回复: 求问:V851SE Tinyvision 修改为SPI NAND flash 没有root登录
@jaying SD NAND和SPI NAND是不一样的东西,引脚也不一样
-
回复: 求问:V851SE Tinyvision 修改为SPI NAND flash 没有root登录
Tinyvision 怎么修改 SPINAND的?飞线么,默认焊盘不支持挂nand的
-
回复: T113 tft lcd显示不正常
dclk太高了,改分频参数,原来6改成16
disp2/disp/de/lowlevel_v2x/disp_al.c
{LCD_IF_HV, 16, 1, 1, 0}, -
回复: All available flash: 0. default 1. nor Choice [default]: 0 INFO: Prepare toolchain ... ERROR: Prepare toolchain error!
请使用
source build/envsetup.sh
lunch -
回复: V3s的USB启动问题
@jeff123a BSP引脚在V3s QFP封装并未引出,他是一个独立的引脚,在BGA封装的V3上硬件叫做 UBOOT 脚,位于 T9 球,并不是SPI_MISO引脚
-
回复: v821解码输出用AW_MPI_VDEC_SetRotate旋转90°,AW_ION_IOC_NEW_ALLOC出错,解码旋转不能用这个函数吗?
AW_ION_IOC_NEW_ALLOC 内存不够了,需要增加ion内存,修改设备树 size_pool相关节点
https://docs.aw-ol.com/docs/soc/v821/software/sdk_sys_conf#预留内存 -
回复: V821驱动8080 8bit接口TFT屏,画面割裂。
试一下加上刷cache的接口
diff --git a/drivers/video/sunxi/disp2/disp/dev_disp.c b/drivers/video/sunxi/disp2/disp/dev_disp.c index 8ddbd28..c084de0 100644 --- a/drivers/video/sunxi/disp2/disp/dev_disp.c +++ b/drivers/video/sunxi/disp2/disp/dev_disp.c @@ -3158,6 +3158,11 @@ static int disp_mem_request(int sel, u32 size) #endif } +void disp_flush_cache(dma_addr_t addr, u32 len) +{ + dma_sync_single_for_device(g_disp_drv.dev, addr, len, DMA_TO_DEVICE); +} + static int disp_mem_release(int sel) { if (sel >= DISP_MEM_NUM || sel < 0) { diff --git a/drivers/video/sunxi/disp2/disp/dev_disp.h b/drivers/video/sunxi/disp2/disp/dev_disp.h index 6478db3..cdd250f 100644 --- a/drivers/video/sunxi/disp2/disp/dev_disp.h +++ b/drivers/video/sunxi/disp2/disp/dev_disp.h @@ -327,6 +327,7 @@ int disp_resume(struct device *dev); s32 disp_create_heap(u32 pHeapHead, u32 pHeapHeadPhy, u32 nHeapSize); void *disp_malloc(u32 num_bytes, void *phy_addr); void disp_free(void *virt_addr, void *phys_addr, u32 num_bytes); +void disp_flush_cache(dma_addr_t addr, u32 len); extern s32 disp_register_sync_proc(void (*proc) (u32)); extern s32 disp_unregister_sync_proc(void (*proc) (u32)); diff --git a/drivers/video/sunxi/disp2/disp/fb_platform.c b/drivers/video/sunxi/disp2/disp/fb_platform.c index 7e95e74..c935ecc 100644 --- a/drivers/video/sunxi/disp2/disp/fb_platform.c +++ b/drivers/video/sunxi/disp2/disp/fb_platform.c @@ -341,6 +341,8 @@ int platform_update_fb_output(void *hw_info, const struct fb_var_screeninfo *var struct disp_manager *mgr; mutex_lock(&info->lock); info->config.info.fb.crop.y = ((long long)var->yoffset) << 32; + + disp_flush_cache(info->dma_mem.device_addr,info->size); #if IS_ENABLED(CONFIG_AW_DISP2_FB_HW_ROTATION_SUPPORT) if (info->fb_rot) fb_g2d_rot_apply(info->fb_rot, &info->config, var->yoffset);
-
回复: E907配置问题:menuconfig里找不到SUNXI remote processor support,E907编译不过
SUNXI remote processor support是kernel_menuconfig
-
回复: v821无法烧录nor flash
flash operation timed out
flash 无响应,物料型号是否是在物料表中的支持型号?另外可以尝试降频等操作
-
回复: v821的udc 出错,dma初始化失败,gadget切换功能有问题
bsp/drivers/usb/sunxi_usb/udc/sunxi_udc.c
unsigned static int g_dma_enable = 0;
-
回复: 编译T113固件的时候总是出现改错误
@z2500abc 在 编译T113固件的时候总是出现改错误 中说:
eyesee-mpp
eyesee-mpp 错误无视即可,这个软件包不支持T113平台,是其他平台使用的
第二个错误需要提供完整的日志,这一部分不包括真正的错误
-
回复: T507启动卡启动失败,用的是供应商提供的镜像,但是启动显示找不到内核镜像是为什么?
@xiduanya 这个是依赖SDK支持的,SDK如果不支持生成卡启动分区表则不行
-
回复: T507启动卡启动失败,用的是供应商提供的镜像,但是启动显示找不到内核镜像是为什么?
GUID Partition Table Header signature is wrong: 0x0 != 0x5452415020494645 part_get_info_efi: *** ERROR: Invalid GPT *** part_get_info_efi: *** Using Backup GPT *** GUID Partition Table Header signature is wrong: 0x0 != 0x5452415020494645 part_get_info_efi: *** ERROR: Invalid GPT *** part_get_info_efi: *** Using Backup GPT *** Wrong Image Format for bootm command
这个镜像应该是不支持启动卡,需要用量产卡生成gpt分区,启动卡这里GPT都是空的
-
回复: MR536 SDK MR536_V1.1直接编译和打包后烧录全志MR536 evk(黄色),报错如下: Unable to handle kernel paging request at virtual address 0000000000040008
Unable to handle kernel paging request at virtual address 0000000000040008
看看内核代码rb_next附近,有非法地址访问
-
回复: 为什么tina liunx打包后没有分区表?烧录时报错?不支持的镜像?
如果想从SD/TF卡启动,记得选择启动卡
想将其转换为标准镜像?用其他软件烧录?
可以参考这里
https://bbs.aw-ol.com/topic/1365/openixcard-在-linux-系统刷写全志镜像到-sd-卡
https://github.com/YuzukiTsuru/OpenixCard -
回复: OpenixCard - 在 Linux 系统刷写全志镜像到 SD 卡
@yunyisa 自制的固件无法打包成全志的镜像,只能由SDK生成,全志镜像有专有的封装格式,不仅仅是地址偏移
-
回复: 对R128模块原理图的疑问
1.AVCC是芯片内部电源供电吗?datasheet上没说。 -- 是芯片内部供电
2.EXT-LDO33不是内部LDO输出么,为什么要外接3V3? -- 外接DCDC降低功耗,减少发热
3.为什么VDD-SYS1与VDD-SYS2、VDD-AON与VDD12-PSM外部要接在一起。 -- R128各模块供电采用内部 PMU
我猜应该有一本完整的硬件设计指南可以解答问题,只是没公开。 -- https://r128.docs.aw-ol.com/hardware/hardware_design/ -
回复: 程序运行之后告诉我有错误
@aaa0557li V851S 不能刷 V851SE,不能刷V851S3,ic cant match axp, please check... 是检查固件与芯片型号不对应,另外检查编译环境是否有其他变量导致编译出来的固件检查不匹配,如果都没问题建议重装一个干净的SDK不要与其他SDK复用同一个环境
-
回复: ISP_ERR
@nimadibaj
[ISP_ERR]isp_ctx_save_exit, line: 109,open /mnt/isp0_1920_1088_30_0_ctx_saved.bin failed, err:Read-only file system.
这个是暂存isp参数,由于没有文件所以打开失败。可以无视。真正的问题是Got signal 11, exiting ...,程序出现段错误,请检查指针使用
-
回复: 搭建开发环境,出现问了了,总是报fatal: cannot obtain manifest https://sdk.aw-ol.com/git_repo/V853Tina_Open/manifest.git
- 执行命令设置全局保存密码
git config --global credential.helper store
- 执行命令输入密码
git clone https://sdk.aw-ol.com/git_repo/V853Tina_Open/manifest.git
- 使用repo拉取sdk
repo init -u https://sdk.aw-ol.com/git_repo/V853Tina_Open/manifest.git -b master -m tina-v853-open.xml
由于repo更新,目前不支持通过repo输入密码,请先使用git命令输入保存密码
-
回复: T113S3双路 dual lvds驱动不起来
uboot和dtsi里面添加dual link IO的配置
demo: lvds2link_pins_a: lvds2link@0 { allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD8", "PD9", "PD6", "PD7", \ "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD18", "PD19", "PD16", "PD17"; allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD8", "PD9", "PD6", "PD7", \ "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD18", "PD19", "PD16", "PD17"; allwinner,function = "lvds1"; allwinner,muxsel = <3>; allwinner,drive = <3>; allwinner,pull = <0>; }; lvds2link_pins_b: lvds2link@1 { allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD8", "PD9", "PD6", "PD7", \ "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD18", "PD19", "PD16", "PD17"; allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD8", "PD9", "PD6", "PD7", \ "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD18", "PD19", "PD16", "PD17"; allwinner,function = "lvds1_suspend"; allwinner,muxsel = <7>; allwinner,drive = <3>; allwinner,pull = <0>; };
dts中 修改为lvds dual link模式,并引用dtsi里配好的dual link IO
&lcd0{ ... lcd_lvds_if = <1>; ... ... pinctrl-0 = <&lvds2link_pins_a>; pinctrl-1 = <&lvds2link_pins_b>; ... }
其他和single link的配置方法无异,如果点不亮请检查时序
这里看到dclk配置是80
但是手册需求的是54
这里提供一套1920x720的时序作为参考
&lcd0 { lcd_used = <1>; lcd_driver_name = "default_lcd"; lcd_backlight = <50>; lcd_if = <3>; lcd_x = <1920>; lcd_y = <720>; lcd_width = <150>; lcd_height = <94>; lcd_dclk_freq = <94>; lcd_pwm_used = <1>; lcd_pwm_ch = <3>; lcd_pwm_freq = <50000>; lcd_pwm_pol = <1>; lcd_pwm_max_limit = <255>; lcd_hbp = <64>; lcd_ht = <2064>; lcd_hspw = <20>; lcd_vbp = <30>; lcd_vt = <760>; lcd_vspw = <10>; lcd_lvds_if = <1>; lcd_lvds_colordepth = <0>; lcd_lvds_mode = <0>; lcd_frm = <1>; lcd_hv_clk_phase = <0>; lcd_hv_sync_polarity= <0>; lcd_gamma_en = <0>; lcd_bright_curve_en = <0>; lcd_cmap_en = <0>; deu_mode = <0>; lcdgamma4iep = <22>; smart_color = <90>; pinctrl-0 = <&lvds2link_pins_a>; pinctrl-1 = <&lvds2link_pins_b>; };
-
回复: V853 和 V853S NPU算力差了0.2,这个0.2在具体应用上会有明显的性能差距吗?主要用来做目标检测,静态场景。
根据具体的模型和需求的规格来看,实际感觉差不多
-
回复: V851s使用spi nand启动不了 VFS: Cannot open root device "ubi0_4" or unknown-block(0,0): error -2
重点:rootfstype=squashfs
v851s/configs/xxx/env.cfg
#kernel command arguments earlyprintk=sunxi-uart,0x02500000 initcall_debug=0 console=ttyS0,115200 nand_root=/dev/ubiblock0_4 mmc_root=/dev/mmcblk0p4 nor_root=/dev/mtdblock3 init=/init rdinit=/rdinit loglevel=8 coherent_pool=32K #reserve_list=30M@64M,78M@128M,200M@512M mac= wifi_mac= bt_mac= specialstr= root_partition=rootfs mtd_name=sys rootfstype=squashfs #set kernel cmdline if boot.img or recovery.img has no cmdline we will use this setargs_nor=setenv bootargs earlyprintk=${earlyprintk} clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${nor_root} rootwait init=${init} rdinit=${rdinit} partitions=${partitions} cma=${cma} coherent_pool=${coherent_pool} ion_carveout_list=${reserve_list} setargs_nand=setenv bootargs earlyprintk=${earlyprintk} clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} ubi.mtd=${mtd_name} root=${nand_root} rootfstype=${rootfstype} rootwait init=${init} rdinit=${rdinit} partitions=${partitions} cma=${cma} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} selinux=${selinux} specialstr=${specialstr} coherent_pool=${coherent_pool} ion_carveout_list=${reserve_list} setargs_nand_ubi=setenv bootargs ubi.mtd=${mtd_name} ubi.block=0,${root_partition} earlyprintk=${earlyprintk} clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${nand_root} rootfstype=${rootfstype} init=${init} partitions=${partitions} cma=${cma} snum=${snum} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} specialstr=${specialstr} gpt=1 setargs_mmc=setenv bootargs earlyprintk=${earlyprintk} clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${mmc_root} rootwait init=${init} partitions=${partitions} cma=${cma} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} selinux=${selinux} specialstr=${specialstr} coherent_pool=${coherent_pool} ion_carveout_list=${reserve_list} #nand command syntax: sunxi_flash read address partition_name read_bytes #0x4007f800 = 0x40080000(kernel entry) - 0x800(boot.img header 2k) boot_partition=boot boot_normal=sunxi_flash read 44800000 ${boot_partition};bootm 44800000 boot_recovery=sunxi_flash read 44800000 extend;bootm 44800000 boot_fastboot=fastboot #recovery key recovery_key_value_max=0x13 recovery_key_value_min=0x10 #fastboot key fastboot_key_value_max=0x8 fastboot_key_value_min=0x2 #uboot system env config bootdelay=1 #default bootcmd, will change at runtime according to key press #default nand boot bootcmd=run setargs_nand boot_normal #verify the kernel verify=N
-
回复: V851se的u-boot引导
会,启动介质优先级描述了每个介质被选择为启动介质的可能性。BROM 首先读取具有最高优先级的介质的 boot0。如果该介质不存在或存在任何问题,BROM 将尝试下一个介质。否则,该介质将被选择为启动介质。
具体可以查看手册GPIO Boot Select表格
-
回复: R128 Vector支持
@layzerlee 需要修改编译参数加上v扩展支持
CONFIG_TOOLCHAIN_MACH_FLAGS="-mcmodel=medany -mabi=lp64dv -march=rv64gcxvthead" CONFIG_TOOLCHAIN_FPU_ABI="-march=rv64gcxvthead"
-
回复: V853S mipi LCD显示驱动调试,colorbar显示异常
dclk过高,屏幕分屏了?
这里提供一个py脚本计算分频系数,这里对应的是HV屏,DSI也可以参考def find_closest_clock(target_clock, clock_list): clock_list = sorted(clock_list) low, high = 0, len(clock_list) - 1 closest = clock_list[low] while low <= high: mid = (low + high) // 2 if clock_list[mid] < target_clock: low = mid + 1 elif clock_list[mid] > target_clock: high = mid - 1 else: return clock_list[mid] if abs(clock_list[mid] - target_clock) < abs(closest - target_clock): closest = clock_list[mid] return closest def calculate_divisor(clock_need, clock_list, min_divisor=6): is_perfect = True for i in clock_list: for j in range(0, 255): if (clock_need * j) == i: closest_clock = i divisor = j return closest_clock, divisor, is_perfect is_perfect = False closest_clock = find_closest_clock(clock_need, clock_list) if closest_clock == 0: return None, None, None divisor = closest_clock // clock_need if divisor < min_divisor: min_diff = float('inf') best_clock = None for clock in clock_list: if clock >= clock_need * min_divisor: current_divisor = clock // clock_need if current_divisor < min_divisor: continue diff = abs(clock - clock_need * current_divisor) if diff < min_diff: min_diff = diff best_clock = clock if best_clock is not None: return best_clock, best_clock // clock_need, is_perfect return closest_clock, divisor, is_perfect clock_list = [ 408, 420, 432, 444, 456, 468, 480, 492, 504, 516, 528, 540, 552, 564, 576, 588, 600, 612, 624, 636, 648, 660, 672, 684, 696, 708, 720, 732, 744, 756, 768, 780, 792, 804, 816, 828, 840, 852, 864, 876, 888, 900, 912, 924, 936, 948, 960, 972, 984, 996, 1008, 1020, 1032, 1044, 1056, 1068, 1080, 1092, 1104, 1116, 1128, 1140, 1152, 1164, 1176, 1188, 1200, 1212, 1224, 1236, 1248, 1260, 1272, 1284, 1296, 1308, 1320, 1332, 1344, 1356, 1368, 1380, 1392, 1404, 1416, 1428, 1440, 1452, 1464, 1476, 1488, 1500, 1512, 1524, 1536, 1548, 1560, 1572, 1584, 1596, 1608, 1620, 1632, 1644, 1656, 1668, 1680, 1692 ] clock_need = int(input("请输入需要的时钟(MHz): ")) closest_clock, divisor, is_perfect = calculate_divisor(clock_need, clock_list) if is_perfect: print(f"父时钟: {closest_clock}MHz, 分频系数: {divisor}, 分频后的频率: {closest_clock / divisor}MHz") else: print(f"无法找到完美,最近的父时钟: {closest_clock}, 分频系数: {divisor}, 分频后的频率: {closest_clock / divisor}MHz") print("请修改分频系数表 clk_tbl 中 HV 分频系数为: {LCD_IF_HV, " + hex(divisor) + ", 1, 1, 0}")
-
回复: 打补丁后,编译失败
第一次编译时候请取消勾选
mpp sample smartIPC_demo
编译完成一次之后使用 cleanmpp && mkmpp 来编译mpp相关demo。 -
回复: R329代码里找不到BOOT0启动打印“HELLO! BOOT0 is starting!”
@yimu163com 在 R329代码里找不到BOOT0启动打印“HELLO! BOOT0 is starting!” 中说:
Binary file ./device/config/chips/r329/bin/boot0_nand_sun50iw11p1.bin matches
Binary file ./device/config/chips/r329/bin/sboot_sun50iw11p1.bin matches
Binary file ./device/config/chips/r329/bin/boot0_spinor_sun50iw11p1.bin matches
Binary file ./device/config/chips/r329/bin/boot0_sdcard_sun50iw11p1.bin matches在这几个bin里,BOOT0不开源