您尚未登录。

#1 Re: 全志 SOC » 100s tina nor启动,怎么新增支持一个32M的norflash? » 2023-08-30 18:00:15

在 sys_config.fex  中有个存储介质那 选norflash,然后,写一个字段
[norflash]
size = 32

再去有个 分区配置的文件 也是 fex类型的,也就是你每次pack时,系统用到的那个文件。看看有没有什么好改的。

我记不住那个单词。

#2 Re: 全志 SOC » 求助:F1C200 播放视频时屏幕Y轴方向异常 LVGL动画测试也是一样 » 2023-08-30 17:43:39

哇酷小二 说:

F1C200s 用 tplayerdemo 播放视频,非常抖,关闭播放屏幕显示就正常了,请问这是什么问题呢?
https://bbs.aw-ol.com/topic/1721/share/1



可能是以下问题:
① 内存带宽不够
② SDK需要优化


哈哈,你推荐的帖子,开发板都跟我大同小异。

改dclk我试过的,我甚至改到 5  , 明显肉眼已经观测到 圈窗帘 的现象了。MP4该抖还是抖,我晚上再仔细观察下有无改善。

内存我记得有看到过,什么什么 buffer_xxxxxx_num 的定义。就是multimedia的库,不知道有没有拼错,就是多媒体库。
原本是 30,我改成了 40,没什么效果。
您说的是 带宽? 而不是 大小?
意思该芯片的内存总线速度不够?

另外:Tina2.0-D1s的SDK我也有下载过,这个是开放的。基本目录结构跟我手里的 Tina3.5.1 如出一辙,同样有这个库,有这个例子。

#3 Re: 全志 SOC » 求助:F1C200 播放视频时屏幕Y轴方向异常 LVGL动画测试也是一样 » 2023-08-30 17:27:36

缩进不知道怎么乱了,不好意思。我的屏幕驱动就是 ili6122 分辨率也是如此,SDK里本身有,这些没有改动。
;----------------------------------------------------------------------------------
[lcd0]
lcd_used            = 1

;-------------------------------------
; avdisplay lcd
;-------------------------------------
lcd_driver_name     = "ili6122_800x480"
lcd_if              = 0
lcd_x               = 800
lcd_y               = 480
lcd_width           = 109
lcd_height          = 70
lcd_dclk_freq       = 33
lcd_pwm_used        = 1
lcd_pwm_ch          = 1
lcd_pwm_freq        = 50000
lcd_pwm_pol         = 1

lcd_hbp             = 46
lcd_ht              = 1056
lcd_hspw            = 20
lcd_vbp             = 23
lcd_vt              = 635
lcd_vspw            = 10


lcd_lvds_if         = 0
lcd_lvds_colordepth = 1
lcd_lvds_mode       = 0
lcd_lvds_ch         = 0
lcd_lvds_bitwidth   = 0
lcd_lvds_io_cross   = 0

lcd_cpu_if          = 0

lcd_frm             = 0
lcd_rb_swap         = 0
lcd_io_phase        = 0x0000
lcd_gamma_en        = 0
lcd_bright_curve_en = 0
lcd_cmap_en         = 0
deu_mode            = 0
lcdgamma4iep        = 22
lcd_io_cfg0         = 0x00000000
smart_color         = 90

lcd_bl_en_used      = 1
lcd_bl_en           = port:PE06<1><0><default><1>
;lcd_power           = port:PE06<1><0><default><0>
;lcd_gpio_0           = port:PE06<1><0><default><0>

lcdd2               = port:PD00<2><0><default><default>
lcdd3               = port:PD01<2><0><default><default>
lcdd4               = port:PD02<2><0><default><default>
lcdd5               = port:PD03<2><0><default><default>
lcdd6               = port:PD04<2><0><default><default>
lcdd7               = port:PD05<2><0><default><default>
lcdd10              = port:PD06<2><0><default><default>
lcdd11              = port:PD07<2><0><default><default>
lcdd12              = port:PD08<2><0><default><default>
lcdd13              = port:PD09<2><0><default><default>
lcdd14              = port:PD10<2><0><default><default>
lcdd15              = port:PD11<2><0><default><default>
lcdd18              = port:PD12<2><0><default><default>
lcdd19              = port:PD13<2><0><default><default>
lcdd20              = port:PD14<2><0><default><default>
lcdd21              = port:PD15<2><0><default><default>
lcdd22              = port:PD16<2><0><default><default>
lcdd23              = port:PD17<2><0><default><default>
lcdclk              = port:PD18<2><0><3><default>
lcdde               = port:PD19<2><0><3><default>
lcdhsync            = port:PD20<2><0><3><default>
lcdvsync            = port:PD21<2><0><3><default>

这是我LCD的配置,更改了很多次。
SDK优化就没办法了,这个SDK是我从别的工程手里接过来的,还闹了很多不愉快的事情。
大致就是:什么都弄好了,只是整理下,拼凑成为成品,结果我拿到手里才发现。

基本什么都没弄 背光,GUI,媒体播放这些。。。一言难尽。
可是,又是一副指导我,点到为止的架势。。没办法老板相信他。他连IO都不会控制,当时我也不会请教了他,你说东,他就扯西。。。到最后给我发脾气。
领一份工资真的挺难的。

内存大小,貌似可以更改。我记得好像又看到过。我试试吧。

#4 全志 SOC » 求助:F1C200 播放视频时屏幕Y轴方向异常 LVGL动画测试也是一样 » 2023-08-30 17:07:14

gaocangjian
回复: 4

我的系统是TINA3.5.1,系统中自带了一个媒体播放器叫 tplayer。
软件包中有一个 tplaydemo ,用来验证这个库。

其实我只需要能够播放 mp3 mp4就可以了。所以我只测试了mp3,mp4。

mp3播放一切正常,但是播放视频时发现了,屏幕Y轴方向上下抖动的现象。

如果屏幕内容静止,则完全没问题,但是,播放视频时就抖的厉害。状况如下

我没有接喇叭,不好吵到别人,音频是正常的没有卡顿。

我开始以为是视频的分辨率问题,换了一个视频也是类似的情况。
后面怀疑全志的播放器写的有问题,这没办法,咱也看不懂,看的懂自己弄了。


直到  ....................  我鬼使神差的运行了一次 LVGL 例程中的播放器,状况如下

看来只要是一出现类似动画的效果就会这样。
这说明我的显示配置本身有问题。现在 在WINDOWS系统,等下我重启把   sys_config.fex  的配置贴上。

求大神分析下,问题出在哪?

#5 Re: 全志 SOC » 求科普LCD panel timing details中参数的意义 » 2023-08-15 11:47:39

x:800,y:480,depth:18,pclk_khz:33000,le:16,ri:209,up:22,lo:22,hs:30,vs:1,sync:0,vmode:0
x y:这个自然就是屏幕的像素啦。
depth:屏幕的颜色深度,比如RGB888就是32,RGB666是18,具体是看屏幕硬件的接法。
pclk_khz:数据传输的时钟频率,要根据屏幕参数确定,不是越快越好,不然显示会失真或者有雪花的。
le:显示屏前廊,从行同步信号到图像左边沿的像素时钟数。
ri:显示屏后廊,从行同步到图像右边沿的像素时钟数,(可以结合上一条,理解为行同步信号是插入到两组行数据中间)。
up:从场同步到图像上边沿的行数,场信号可以理解为一张图片的起始信号。
lo:从场同步到图像下边沿的行数。
hs:行同步时间长度(像素时钟数)。
vs:场同步时间长度(行数)。
sync、vmode:这两个参数的配置,可以从文件include/uapi/linux/fb.h的211~229行找到一些蛛丝马迹,大概是控制视频刷新的一些参数。

原文作者是:http://cfcx.ltd/embedded/441/

解决了。

#6 全志 SOC » 求科普LCD panel timing details中参数的意义 » 2023-08-15 11:34:52

gaocangjian
回复: 1

RT:
x:800,y:480,depth:18,pclk\khz:33000,le:87,ri:40,up:31,lo:13,hs:1,vs:1,sync:3,vmode:0
比如这个参数,我大概知道的定义:
xy:分辨率
depth:这个是不是指色位深度?
pclk:时钟,这个不能错,后面关于时间的参数,单位都是CLK

le ri:完全不知道什么意思。

up,lo:是某种高低电平相关的?

hs vs:好像所 hs vs 空闲时的状态。

sync:不知道

vmode: 不知道

网大神科普,或者提供相关资料,不慎感激。

#7 Re: 全志 SOC » Tina 2.0集成了哪些UI?求Tina环境下,移植LVGL的参考教程。 » 2023-06-02 21:01:25

@暗水天狼
我倒是可以正常编译工程,不过没用可视化工具生成代码。现在不会往工程里加库。。。。不懂makefile脑壳已经爆炸。

#8 全志 SOC » TINA中如何调用库文件 » 2023-06-02 20:54:19

gaocangjian
回复: 1

刚开始学Linux关于makefile实在是看不懂,遇到以下问题,往大神不吝赐教。

我的tina版本是3.5.1。

在路径 /home/(name)/tina351/package/gui/littlevgl-8/ 下有5个文件夹
分别是
lv_drivers
lv_examples
lv_lvgl
lv_monitor
lv_project

其中4个是官方SDK里 LVGL目录里原本的。

lv_project是我照猫画虎弄的。
内部有 一个 src文件夹 和 一个makefile ,都是为从 lv_examples 中拷贝过来的。

试着编译,运行这个工程没有问题。现在,想在工程中使用 modbus库。遇到了问题。makefile如下。

#
# Makefile
#
CC ?= gcc
LVGL_DIR_NAME ?= lvgl
LVGL_DIR ?= ${shell pwd}
CFLAGS ?= -O3 -g0 -I$(LVGL_DIR)/ -Wall -Wshadow -Wundef -Wmissing-prototypes -Wno-discarded-qualifiers -Wall -Wextra -Wno-unused-function -Wno-error=strict-prototypes -Wpointer-arith -fno-strict-aliasing -Wno-error=cpp -Wuninitialized -Wmaybe-uninitialized -Wno-unused-parameter -Wno-missing-field-initializers -Wtype-limits -Wsizeof-pointer-memaccess -Wno-format-nonliteral -Wno-cast-qual -Wunreachable-code -Wno-switch-default -Wreturn-type -Wmultichar -Wformat-security -Wno-ignored-qualifiers -Wno-error=pedantic -Wno-sign-compare -Wno-error=missing-prototypes -Wdouble-promotion -Wclobbered -Wdeprecated -Wempty-body -Wtype-limits -Wshift-negative-value -Wstack-usage=2048 -Wno-unused-value -Wno-unused-parameter -Wno-missing-field-initializers -Wuninitialized -Wmaybe-uninitialized -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wtype-limits -Wsizeof-pointer-memaccess -Wno-format-nonliteral -Wpointer-arith -Wno-cast-qual -Wmissing-prototypes -Wunreachable-code -Wno-switch-default -Wreturn-type -Wmultichar -Wno-discarded-qualifiers -Wformat-security -Wno-ignored-qualifiers -Wno-sign-compare
LDFLAGS ?= -lm -lmodbus
BIN = lv_project


#Collect the files to compile ./tupian.c
MAINSRC = ./ui_main.c ./usr_ui.c ./touch_5_points_cal.c ./main.c

include $(LVGL_DIR)/lvgl/lvgl.mk
include $(LVGL_DIR)/lv_drivers/lv_drivers.mk

#include $(LVGL_DIR)/lv_demos/lv_demo.mk

OBJEXT ?= .o

AOBJS = $(ASRCS:.S=$(OBJEXT))
COBJS = $(CSRCS:.c=$(OBJEXT))

MAINOBJ = $(MAINSRC:.c=$(OBJEXT))

SRCS = $(ASRCS) $(CSRCS) $(MAINSRC)
OBJS = $(AOBJS) $(COBJS)

## MAINOBJ -> OBJFILES

all: default

%.o: %.c
    @$(CC) $(CFLAGS) $(LDFLAGS) $(LOCAL_CFLAGS) -c $< -o $@
    @echo "CC $<"
   
default: $(AOBJS) $(COBJS) $(MAINOBJ)
    $(CC) -o $(BIN) $(MAINOBJ) $(AOBJS) $(COBJS) $(LDFLAGS)

clean:
    rm -f $(BIN) $(AOBJS) $(COBJS) $(MAINOBJ)

在 程序中包含头文件 #include <modbus/modbus.h> 编译不会报错。

但是,代码中调用 mb = modbus_new_rtu(...) 函数就会报错。
...undefined reference to `modbus_new_rtu'...

求大神解惑,为该怎么修改makefile才能在编译时找到这个库。

这个库,在根目录下 make menuconfig -> Libraries 下 已经 * 勾选 libmodbus

mad

#9 Re: 全志 SOC » T113-S3 如何入门比较好呢? » 2023-05-10 19:29:01

就看韦东山的视频和资料,他对这个芯片做了不少教程,能学多少学多少吧。

#10 全志 SOC » Tina 2.0集成了哪些UI?求Tina环境下,移植LVGL的参考教程。 » 2023-05-10 19:26:00

gaocangjian
回复: 5

我用的Tina版本是3.5.1,根目录下 menuconfig 里只有 , miniGui 和 QT。而东山老师说,3.5以上的Tina是支持lvgl的。我没找到。

今天买了一块 d1s 的板子,下载了官方公开的 tina sdk 2.0 正在拷贝中。还一个小时多,哭死。
有没有前辈知道这版 SDK对 LVGL有支持吗?还是要自己移植。

查了很多帖子,都是不是在Tina环境下移植的。

从单片机转过来的,以前最好的片子就玩过F4 ESP32这些。目前很蒙B...

#11 Re: 全志 SOC » minigui中,如何创建线程。 » 2022-09-19 12:57:04

解决了.....我的天...
sleep居然所s级延迟.... 跟windows不一样.
改成usleep就可以了 这玩意是微妙级的

#12 全志 SOC » minigui中,如何创建线程。 » 2022-09-19 12:37:44

gaocangjian
回复: 1

Tina3.5.1中自带的UI是 minigui ,这东西比较老,相应的资料也少。
现在我遇到一个问题:

怎么在minigui的应用程序框架中添加自己的线程?

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

程序中同时使用了 wav播放库 和 modbus库。

wav不用说,如果一定时间内没有给驱动程序送数据流,他就会卡住,表现是声音断断续续。

实测在tinyplay库中:
pcm_writei(ctx.pcm, music_buffer, frame_count) 该函数,如果没有即时调用就会卡顿。

函数内部最终实现的接口是:
ioctl(pcm->fd, SNDRV_PCM_IOCTL_WRITEI_FRAMES, &x)

也就是说 pcm_writei 如果没有及时被执行,则 pcm_writei 会阻塞大约512ms(平时根据设置缓存的大小 几十到100多ms) . 这段时间按个人理解是 重新启动初始化了 pcm设备。

而modbus干脆在读取设备时,干脆就是一个阻塞函数...等待目标地址的设备回应 如果超出规定时间 则放弃该次通讯,报告错误。
仅仅读一个线圈寄存器 我都需要为他花费至少40ms的时间。9600波特率 传输1个字节 大约不到1ms ,来回的报文大概都用掉了 10多MS。

我现在的问题就是 这两者无法 合理的分配时间。。。如果在播放过程中穿插modbus指令,声音就会时不时卡顿。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

我试着用一个进程来 单独完成播放wav的工作 在程序中添加
void *thread_fun(void *arg)
{
    pthread_t tid;
   
    while(1)
    {
           tid = pthread_self();
               printf("hello %u~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n",(unsigned int)tid);
           sleep(500);
    }
}

并在int MiniGUIMain(int argc, const char *argv[])函数最开始的地方添加 :pthread_create(&id,NULL,thread_fun,NULL);

结果是没什么鸟用....仅仅在应用启动时 输出一条 printf("hello %u~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n",(unsigned int)tid);
后面就毫无动静了。。。minigui正常工作。但是不会一直重复打印内容。

大佬们,有什么高招吗?

#13 Re: 全志 SOC » TINA中库的使用问题 » 2022-08-28 16:11:14

好像可以了!!!!
比如我要使用libugpio....只要在makefile中 LOCAL_LDFLAGS = -luguio就可以了....
是不是...只要增加 去掉lib 换成 "l"+"库名"就可以了额....

#14 Re: 全志 SOC » TINA中库的使用问题 » 2022-08-28 15:21:38

目前,为已经在我的工程中拷贝了。。。tinyplay相关的库。。。modbus相关的库。。。目前准备把libugpio也拷过来。。。

放歌是能放....modbus也有输出....一切工作正常...但是就是觉得者不科学...当然,科学我也不懂。

让我想起了前段时间看到 有人在ubuntu下 装不上全志的驱动...结果在ubuntu下弄个windows虚拟机烧镜像的事情...:( 对于初学者 这游戏太难了...

实在觉得自己有点蠢。。。:( 你们都是咋搞的阿。。。

#15 全志 SOC » TINA中库的使用问题 » 2022-08-28 15:18:23

gaocangjian
回复: 3

学习TINA平台的时候遇到一个问题。

比如我要使用libmodbus:
        我在make menuconfig 中勾选*了libmodbus,保存退出编译之后。
        在tina/out/c200s-F1C200s/compile_dir/target 中可以找到一个叫 libmodbus-3.1.2的文件夹。
        这时候,我引用modbus库的头文件是可以的,并不会报错。
        #include <modbus/modbus.h>

        但是,当我想使用该头文件内声明的API函数时,出现问题。编译错误提示,找不到函数实体。

        比如 modbus_new_rtu modbus_set_slave modbus_connect

        实在没办法,我到dl文件夹下,找到libmodbus,这个文件夹下全部是压缩包。解压,把modbus.c.....modbus-rtu.c...等等文件都拷贝到我的工程。。
        就可以编译通过 并且这些函数可以正常使用。

        目前知道的是tina/dl这个目录下,全部为压缩文件,对应menuconfig下的Libraries  --->

        我的工程是tina/package/minigui/xxxxx 拷贝了一个F1C200的项目自己改的。

        我想知道,如何直接使用这些库...既然编译了...我是不是应该可以通过修改makefile或者其他办法直接使用这些库所提供的API函数。

        本人初学者,问的问题比较愚蠢。。。望大神不吝赐教,指点一下。

#16 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 新人水一帖 » 2022-08-19 16:43:38

对于玩mcu的,这玩意容易劝退...
对于不玩mcu的,我个人感觉,还是玩点别的吧...
本人目前在被劝退的路上渐行渐远..
但是,我还没放弃呢!

#17 Re: Cortex M0/M3/M4/M7 » 请教,c语言里的switch里,可以if语句里再加case吗? » 2022-08-19 16:36:43

额................
有什么不同吗?
case xx:
      if(xxx)
      {
     
      }
break;

#18 Re: 华芯微特 » 爱她,就给她一个惊喜 » 2022-08-19 16:34:40

董小姐,你嘴角向下的时候很美。

#19 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 个人刚开始学习嵌入式linux,笔记本虚拟机的内核编译速度实在不完美,想装一台Linux主机专门用来编译,向大佬们询问一点建议 » 2022-08-19 16:30:00

就用旧电脑装一台ubuntu就行了,不嫌弃麻烦 双系统也可以阿。嫌弃占地方 有钱到话去买一台mini主机,也很方便阿。主要就是你现在已经可以编译代码了。一定要记得虚拟机装的什么版本,你就在真机上也装同样的ubuntu版本,内核版本也要注意。这样少采坑。

#20 Re: 全志 SOC » 播放WAV文件报错! (Broken pipe) » 2022-08-19 16:19:21

@哇酷小二
--------------------------------------
额,这还真的可以试试。

#21 Re: 全志 SOC » 播放WAV文件报错! (Broken pipe) » 2022-08-19 16:08:21

现在怀疑 在调用int play_wav_music(const char * partname) 这个函数前是不是应该有一定的初始化动作。但是,在全志提供的例子中,并没有。并且他的例子在我的板子上也没有声音。。。
怀疑要么需要初始化,或者是某个配置文件没有配置。。。。
现在在看aplay和tinyplay的代码,tinyplay相对代码少一点。但是他是通过函数指针把snd_pcm_......相关函数重新包了一次的。
aplay因为牵扯到命令行解释啥的..代码很多。。先看看tinyplay吧。

#22 Re: 全志 SOC » 播放WAV文件报错! (Broken pipe) » 2022-08-19 16:02:59

哇酷小二 说:

有没有试过 tinyplay 呢?

---------------------------------------------------------------------
可用哦,一切正常!~~~tiny那几个测试程序都可以用,启动时的开机声音就是tinyplay播放的。
aplay也正常工作。

#23 全志 SOC » 播放WAV文件报错! (Broken pipe) » 2022-08-19 14:40:15

gaocangjian
回复: 5

在模仿全志例程的时候遇到了一个问题,具体如下:

我可以用aplay播放wav文件,但是在工程中无法播放,每次执行到
       err = snd_pcm_writei(playback_handle, buf , BUF_LEN/4);
会弹出错误 write to audio interface failed (Broken pipe) "损坏的管道?"

播放WAV的函数是抄的全志洗衣机那个例子,
网上很多帖子都有提到过类似这段代码,但是没有多余什么讲解 sad。自己看大概是读出wav文件的wave_header_t,
根据结构成员配置打开的pcm设备,最后snd_pcm_writei实现播放,而我的错误就是该函数返回的。
具体如下:

int play_wav_music(const char * partname)
{
	int i;	int err;
	wav;
	int headwavcntp;
	snd_pcm_t *playback_handle;	snd_pcm_hw_params_t *hw_params;
	FILE *fp = NULL;
	snd_pcm_format_t pcm_fmt;
	char buf[BUF_LEN];

	/* 打开 wav 文件 */
	fprintf(stderr, "open file : %s\n", partname);
	fp = fopen(partname, "r");
	if (fp == NULL) {
		fprintf(stderr, "open test pcm file err\n");
		return -1;
	}

	/* 读文件头结构体 */
	headwavcntp = fread(&wav, 1, sizeof(wave_header_t), fp);
	if(headwavcntp != sizeof(wave_header_t)){
		printf("read wav file head error!\n");
		fclose(fp);
		return -1;
	}

	/* 	打印 读到的文件信息 */
	printf("read wav file head success \n");
	printf("bps = %d\n", wav.uBitsPerSample);
	printf("chn = %d\n", wav.uChannels);
	printf("fs = %d\n", wav.uSampleRate);
	
	/* 判断 是8bit还是16bit */
	if(wav.uBitsPerSample == 8){
		pcm_fmt = SND_PCM_FORMAT_S8;
	}else if(wav.uBitsPerSample == 16){
		pcm_fmt = SND_PCM_FORMAT_S16_LE;
	}else{
		printf("uBitsPerSample not support!\n");
		fclose(fp);
		return -1;
	}
		if((err = snd_pcm_open(&playback_handle,  "default", SND_PCM_STREAM_PLAYBACK, 0)) < 0){
			fprintf(stderr, "cannot open audio device record.pcm (%s)\n",  snd_strerror(err));
			fclose(fp);
			return -1;
		}
		if((err = snd_pcm_hw_params_malloc(&hw_params)) < 0){
			fprintf(stderr, "cannot allocate hardware parameter structure (%s)\n",snd_strerror(err));
			goto play_wav_out;
		}
		if((err = snd_pcm_hw_params_any(playback_handle, hw_params)) < 0){
			fprintf(stderr, "cannot initialize hardware parameter structure (%s)\n", snd_strerror(err));
			goto play_wav_out;
		}
		if((err = snd_pcm_hw_params_set_access(playback_handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0){
			fprintf(stderr, "cannot allocate hardware parameter structure (%s)\n",snd_strerror(err));
			goto play_wav_out;
		}
		if((err = snd_pcm_hw_params_set_format(playback_handle, hw_params, pcm_fmt)) < 0){
			fprintf(stderr, "cannot allocate hardware parameter structure (%s)\n",snd_strerror(err));
			goto play_wav_out;
		}
		if((err = snd_pcm_hw_params_set_rate(playback_handle, hw_params, wav.uSampleRate, 0)) < 0){
			fprintf(stderr , "cannot set sample rate (%s)\n", snd_strerror(err));
			goto play_wav_out;
		}
		if((err = snd_pcm_hw_params_set_channels(playback_handle, hw_params, wav.uChannels)) <0){
			fprintf(stderr, "cannot set channel count (%s)\n", snd_strerror(err));
			goto play_wav_out;
		}
		if((err = snd_pcm_hw_params(playback_handle, hw_params)) < 0){
			fprintf(stderr, "cannot set parameters (%s)\n", snd_strerror(err));
			goto play_wav_out;
		}
		snd_pcm_hw_params_free(hw_params);

		while (!feof(fp)) {
			err = fread(buf, 1, BUF_LEN, fp);
			if (err < 0){
				fprintf(stderr, "read pcm from file err\n");
				goto play_wav_out;
			}
			err = snd_pcm_writei(playback_handle, buf , BUF_LEN/4);
			if (err < 0){
				fprintf(stderr, "write to audio interface failed (%s)\n", /* 我就是在这里弹出的错误 */
				snd_strerror(err));
				goto play_wav_out;
			}
		}

play_wav_out:
	fprintf(stderr, "close file\n");
	fclose(fp);
	fprintf(stderr, "close dev\n");
	snd_pcm_close(playback_handle);	fprintf(stderr, "ok\n");
	return 0;
}

/proc/asound/devies 内容如下:

root@TinaLinux:/proc/asound# cat devices
  0: [ 0]   : control
 16: [ 0- 0]: digital audio playback
 24: [ 0- 0]: digital audio capture
 33:        : timer

设备目录下也正常:

root@TinaLinux:/dev/snd# ls -l
crw-rw----    1 root     root      116,   0 Jan  1 00:00 controlC0
crw-rw----    1 root     root      116,  24 Jan  1 00:00 pcmC0D0c
crw-rw----    1 root     root      116,  16 Jan  1 00:00 pcmC0D0p
crw-rw----    1 root     root      116,  33 Jan  1 00:00 timer

也把snd_pcm_open()函数中的设备名 改变过 现在使用的是默认值 ''default",
改过 "hw:0,0" "plughw:0,0" "default:0" 输出错误信息是一样的。

完整的错误信息是这样的/*怕出不必要的问题,没有播放SD卡上的文件,这个开机.wav在启动过程中 通过壳命令播放过*/:

open file : /etc/kaiji.wav  
read wav file head success 
bps = 16
chn = 1
fs = 32000
write to audio interface failed (Broken pipe)
close file
close dev

现在无从下爪,大佬们帮看下应该怎么处理,或者给个思路也好。为去读aplay的源码看看,2000多行,估计问题比较大! hmm

把报错部分的摘出来:

while (!feof(fp)) {
	err = fread(buf, 1, BUF_LEN, fp);
	if (err < 0){
		fprintf(stderr, "read pcm from file err\n");
				goto play_wav_out;
	}
	err = snd_pcm_writei(playback_handle, buf , BUF_LEN/4);
	if (err < 0){
		fprintf(stderr, "write to audio interface failed (%s)\n", /*就在这里输出的 str = "Broken pipe"*/
		snd_strerror(err));
		goto play_wav_out;
	}
}

#24 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » 在V3S上试着跑了一下新版的LVGL-8.1 界面效果越来越赞! » 2022-08-18 16:53:37

下载下来用试试看,感觉还是这个UI简洁明了。动不动就win什么什么的,一大堆窗口的UI现在看起来有点头疼了。

#25 Re: 全志 SOC » 调试应用程序时,怎么快速烧写到目标板? » 2022-08-10 22:41:46

@海石生风
好的,我明天去搜一下相关到知识。从MCU转过来的,需要学习的还很多。3Q!

#26 Re: 全志 SOC » 调试应用程序时,怎么快速烧写到目标板? » 2022-08-10 14:17:15

unturned3 说:
gaocangjian 说:

请问,这个错误的 怎么解决 , 他所说的 476kb 到底指的是哪里?

用 df -h 或 mount 命令看看是什么被挂载在 /overlay 上的?

--------------------------------------------------------------------------------------------------

root@TinaLinux:/usr/bin# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                  512.0K     36.0K    476.0K   7% /
/dev/root                 5.3M      5.3M         0 100% /rom
devtmpfs                 20.7M         0     20.7M   0% /dev
tmpfs                    28.8M     32.0K     28.8M   0% /tmp
/dev/by-name/rootfs_data
                        512.0K     36.0K    476.0K   7% /overlay
overlayfs:/overlay      512.0K     36.0K    476.0K   7% /
/dev/mtdblock8            1.3M     72.0K      1.2M   6% /mnt/UDISK
/dev/mmcblk0            486.0M    287.4M    198.6M  59% /mnt/SDCARD

看到了,因该是rootfs_data被挂在了overlay上,36K被占用?我仔细再去看看关于rootfs_data的东西,谢谢你。
改一下partition试试看。

#27 Re: 全志 SOC » 调试应用程序时,怎么快速烧写到目标板? » 2022-08-10 13:42:58

海石生风 说:

@gaocangjian
开发时用NFS挂载文件系统、或用NFS挂载一个文件夹,实质就是弄一个共享文件夹把程序复制进去即可,发布时才需要写入Flash。

3Q,我用adb push 把编译好的 ipk文件 送到 小机到sd卡中了。。。现在的问题是需要安装。

#28 Re: 全志 SOC » 调试应用程序时,怎么快速烧写到目标板? » 2022-08-10 13:34:58

谢谢,哦,明白了。为手上有128M的NAND,等一下试试看。

-------------------------------------------------------------------------------
我查了相关的资料,在 menuconfig 中勾选了 opkg的支持选项
现在 小机 可用识别 opkg 这个命令 :)
但是新的问题又来了。

root@TinaLinux:/mnt/SDCARD# opkg install F1C200s-board_1.0-1_sunxi.ipk /* 我的命令 我把 ipk PUSH到了SD卡 */
Installing F1C200s-board (1.0-1) to root...
Collected errors:
* verify_pkg_installable: Only have 476kb available on filesystem /overlay, pkg F1C200s-board needs 508
* opkg_install_cmd: Cannot install package F1C200s-board.

请问,这个错误的 怎么解决 , 他所说的 476kb 到底指的是哪里?

#29 全志 SOC » 调试应用程序时,怎么快速烧写到目标板? » 2022-08-10 11:16:17

gaocangjian
回复: 12

刚学SOC现在平台已经搭建好了。
每次修改完应用程序都要重新打包把整个镜像烧写到FLASH中,用LiveSuit。
真的很慢很慢,有时候改几个代码,等几分钟。。。
请教有没有快速点到方法?

目前用adb push把ipk弄到SD卡上... 但是在小机上不能安装。
opkg install xxx 小机不认识

#32 全志 SOC » 求助:LiveSuit不弹出烧写对话框,怀疑awusb没有安装上。 » 2022-08-09 00:11:19

gaocangjian
回复: 3

本人野路子初学者最近学习全智的Linux-Tina,遇到了问题。LiveSuit不弹出烧写对话框,怀疑awusb没有安装上。

具体是:我有两台电脑,一个台式,一个笔记本
           我的笔记本电脑,在编译,打包都正常的情况下。
           上电短路FLASH引脚,LiveSuit并不能弹出 提示擦出并烧录的对话框。
           代码包是在另一台电脑上验证过的,都正常,并且点亮了LCD,显示了自己想要的图形。

           ubuntu版本16.04 不是虚拟机

           LiveSuit安装包是 全智资料中有一个 tools/aw_tools/LiveSuit...x64 里面有一个 LiveSuit.run 和 一个PDF

           运行 ./LiveSuit.run 的信息如下:
--------------------------------------------------------------------------------------------------------
root@ub:~/LiveSuit_For_Linux64# ./LiveSuit.run
You are running on Ubuntu
LiveSuit/
LiveSuit/LiveSuit.sh
LiveSuit/bin/
LiveSuit/bin/regdemo.lua
LiveSuit/bin/LiveProc.Plg
LiveSuit/bin/LiveSuit.lan
LiveSuit/bin/luadec.dll
LiveSuit/bin/imgdec_fun.lua
LiveSuit/bin/LiveSuit
LiveSuit/bin/libQtGui.so.4
LiveSuit/bin/regdecode.lua
LiveSuit/bin/ini_fun.lua
LiveSuit/bin/libQtCore.so.4
LiveSuit/bin/common_fun.lua
LiveSuit/bin/plgvector.dll
LiveSuit/bin/regbasefun.lua
LiveSuit/bin/LangPlg.dll
LiveSuit/bin/luaBase.dll
LiveSuit/bin/luaeFex.dll
awdev-0.5-1dkms.noarch.rpm
awdev-dkms_0.5_all.deb
(Reading database ... 182036 files and directories currently installed.)
Preparing to unpack /tmp/awdev-dkms_0.5_all.deb ...

-------- Uninstall Beginning --------
Module:  awdev
Version: 0.5
Kernel:  2.6.32-52-generic (x86_64)
-------------------------------------

Status: This module version was INACTIVE for this kernel.
depmod....(bad exit status: 1)

DKMS: uninstall completed.

------------------------------
Deleting module version: 0.5
completely from the DKMS tree.
------------------------------
Done.
Unpacking awdev-dkms (0.5) over (0.5) ...
Setting up awdev-dkms (0.5) ...

Loading tarball for awdev-0.5
Loading /var/lib/dkms/awdev/0.5/2.6.32-52-generic/x86_64...

DKMS: ldtarball completed.

Creating symlink /var/lib/dkms/awdev/0.5/source ->
                 /usr/src/awdev-0.5

DKMS: add completed.
First Installation: checking all kernels...
Building only for 4.15.0-112-generic
Building for architecture x86_64
Building initial module for 4.15.0-112-generic
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/awdev-dkms.0.crash'
Error! Bad return status for module build on kernel: 4.15.0-112-generic (x86_64)
Consult /var/lib/dkms/awdev/0.5/build/make.log for more information.
--------------------------------------------------------------------------------------------------------

问题1:This module version was INACTIVE for this kernel.
          貌似这个没问题,我另一台14.04的电脑上也显示不认可的...但是可以正常工作

问题2: ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/awdev-dkms.0.crash'
           Error! Bad return status for module build on kernel: 4.15.0-112-generic (x86_64)   
           这个就表示一脸懵逼。。。。实在不知道该怎么办。

在这之后,LiveSuit.run会在 home/user-name/Bin 生成一个文件夹
这应该是安装后的东西,按照 全智给的PDF 安装USB驱动,###依然不能成功###
具体如下:
----------------------------------------------------------------------------------------------------
root@ub:~/Bin# dpkg -i awdev-dkms_0.5_all.deb

(Reading database ... 182036 files and directories currently installed.)
Preparing to unpack awdev-dkms_0.5_all.deb ...

-------- Uninstall Beginning --------
Module:  awdev
Version: 0.5
Kernel:  2.6.32-52-generic (x86_64)
-------------------------------------

Status: This module version was INACTIVE for this kernel.
depmod....(bad exit status: 1)

DKMS: uninstall completed.

------------------------------
Deleting module version: 0.5
completely from the DKMS tree.
------------------------------
Done.
Unpacking awdev-dkms (0.5) over (0.5) ...
Setting up awdev-dkms (0.5) ...

Loading tarball for awdev-0.5
Loading /var/lib/dkms/awdev/0.5/2.6.32-52-generic/x86_64...

DKMS: ldtarball completed.

Creating symlink /var/lib/dkms/awdev/0.5/source ->
                 /usr/src/awdev-0.5

DKMS: add completed.
First Installation: checking all kernels...
Building only for 4.15.0-112-generic
Building for architecture x86_64
Building initial module for 4.15.0-112-generic
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/awdev-dkms.0.crash'
Error! Bad return status for module build on kernel: 4.15.0-112-generic (x86_64)
Consult /var/lib/dkms/awdev/0.5/build/make.log for more information.

----------------------------------------------------------------------------------------------------
     
其实,问题跟上面一样的。应该在运行 ./LiveSuit.run的最后阶段就尝试了安装驱动,但是失败了。
最后的错误提示信息一模一样。
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/awdev-dkms.0.crash'
Error! Bad return status for module build on kernel: 4.15.0-112-generic (x86_64)

########################################################

但是即使是这样失败的安装,短路FLASH,上电时,仍然可以看到识别了全知的设备。
打印信息如下: lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 8087:0a2a Intel Corp.
Bus 001 Device 003: ID 04f2:b5d7 Chicony Electronics Co., Ltd
Bus 001 Device 002: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 001 Device 006: ID 1f3a:efe8 Onda (unverified) V972 tablet in flashing mode
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 001 Device 006: ID 1f3a:efe8 Onda (unverified) V972 tablet in flashing mode
不要看括号里的信息,我那台能工作的电脑也是这样的。。。忽略了

但是区别就是 那台能工作的电脑 上 如果 lsmod 可以在列表中 找到 awusb
而,这台不能工作的电脑 始终 在mod列表中 找不到 这个mod....

我猜测这应该就是LiveSuit不能正常工作的原因..........
搞了1整天了,现在已经过了0点了..实在搞不懂了...

请大佬们,指点一二,小弟感激不尽...先拜谢大佬了!

页脚

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

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