您尚未登录。

#1 Re: 全志 SOC » F1C200S牺牲颜色数量,增加一个TWI1出来? » 2022-04-02 14:04:35

哇酷小二 说:

颜色不能丢,你都接了ns2009,就直接接那一组I2C就好了, I2C是总线形式的,可以挂很多设备。

多一路硬件iic可以有自己独立的带宽

#2 Re: 全志 SOC » F1C200S牺牲颜色数量,增加一个TWI1出来? » 2022-04-02 12:51:38

@stephone
我想到两种颜色方案
1 B7与B6接一起,接D6
2 B3 接地,D3-D6接B4-B7

兄弟用的那种颜色方案?

#3 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 新人的提问,本人初一,对电脑很感兴趣,现在学linux是不是太早了? » 2022-03-19 08:39:07

鳝丝与螺丝 说:
abutter 说:

学用还是学开发?学开发是应用还是驱动?

学着玩玩
搭个服务器

可以用旧手机ROOT后做服务器,还可以找源码编译内核,彻底把手机改成开发板

#4 全志 SOC » 请大家推荐一个AT命令收发的纯C开源代码包 » 2022-03-18 20:46:11

TivonLiu
回复: 2

串口通过AT命令与通信模块交互,这样的软件包应该有很多,大家用得顺手的推荐一下,最好是基于裸机的。

#5 全志 SOC » F1C200S牺牲颜色数量,增加一个TWI1出来? » 2022-03-18 20:35:51

TivonLiu
回复: 8

TWI1.png
其中G2接地即可
但是B7是蓝色高位,接地和拉高对颜色影响很大
我有两个想法不知道哪个更好?
1 B7与B6接一起,接D6
2 B3 接地,D3-D6接B4-B7

#8 Re: 全志 SOC » F1C100S怎么样才能从SD卡加载裸机代码 » 2020-12-09 17:48:00

儿童节给大家的礼物,f1c200s,TF卡启动RTT的spl
http://whycan.com/t_4606.html
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)

#11 Re: NB-IoT/2G模块/4G模块/GPRS模块/GPS/北斗 » 这个更像是展锐8910DM原厂SDK? » 2020-12-09 16:39:18

app_start.c添加代码,否则host口无调试输出

    srvUsbInit();
    srvPmRun();

    #ifdef  CONFIG_HAIER_APP
        extern void haier_appimg_enter(void);
        haier_appimg_enter();
    #endif


    //app_start.c添加此段代码,否则host口无调试输出
    drvDebugPortMode_t dhost_mode = {
        .protocol = DRV_DEBUG_PROTOCOL_HOST,
        .trace_enable = true,
        .cmd_enable = true,
        .bs_enable = true,
    };
    drvDebugPort_t *dhost_port = drvDhostCreate(dhost_mode);
    drvHostCmdEngineCreate(dhost_port);
    //app_start.c添加此段代码,否则host口无调试输出

    // wait a while for PM source created
    osiThreadSleep(10);
    osiPmStart();

#14 NB-IoT/2G模块/4G模块/GPRS模块/GPS/北斗 » 这个更像是展锐8910DM原厂SDK? » 2020-12-09 16:20:43

TivonLiu
回复: 21

https://gitee.com/zkaijing/haier_8910dm_cat1?_from=gitee_search
无意中发现这个更像原厂SDK,组件,底层驱动,第三方都有,编译下载到合宙724UG模块中发现不能附着网络,求高手指导。

#20 Re: 全志 SOC » 触屏读取的x轴y轴AD值和实际坐标值的换算关系 » 2020-06-11 06:04:20

#include <rtthread.h>

struct calibration {
    int x[5];
    int y[5];
    int xfb[5];
    int yfb[5];
    int a[7];
};
struct calibration cal;
int perform_calibration(struct calibration *cal) {
    int j;
    float n, x, y, x2, y2, xy, z, zx, zy;
    float det, a, b, c, e, f, i;
    float scaling = 65536.0;
// Get sums for matrix
    n = x = y = x2 = y2 = xy = 0;
    for(j = 0; j < 5; j++) {
        n += 1.0;
        x += (float)cal->x[j];
        y += (float)cal->y[j];
        x2 += (float)(cal->x[j]*cal->x[j]);
        y2 += (float)(cal->y[j]*cal->y[j]);
        xy += (float)(cal->x[j]*cal->y[j]);
    }
// Get determinant of matrix -- check if determinant is too small
    det = n*(x2*y2 - xy*xy) + x*(xy*y - x*y2) + y*(x*xy - y*x2);
    if(det < 0.1 && det > -0.1) {
        rt_kprintf("ts_calibrate: determinant is too small -- %f\n",det);
        return 0;
    }
// Get elements of inverse matrix
    a = (x2*y2 - xy*xy)/det;
    b = (xy*y - x*y2)/det;
    c = (x*xy - y*x2)/det;
    e = (n*y2 - y*y)/det;
    f = (x*y - n*xy)/det;
    i = (n*x2 - x*x)/det;
// Get sums for x calibration
    z = zx = zy = 0;
    for(j=0;j<5;j++) {
        z += (float)cal->xfb[j];
        zx += (float)(cal->xfb[j]*cal->x[j]);
        zy += (float)(cal->xfb[j]*cal->y[j]);
    }
// Now multiply out to get the calibration for framebuffer x coord
    cal->a[0] = (int)((a*z + b*zx + c*zy)*(scaling));
    cal->a[1] = (int)((b*z + e*zx + f*zy)*(scaling));
    cal->a[2] = (int)((c*z + f*zx + i*zy)*(scaling));
   // rt_kprintf("%f %f %f\n",(a*z + b*zx + c*zy),(b*z + e*zx + f*zy),(c*z + f*zx + i*zy));
// Get sums for y calibration
    z = zx = zy = 0;
    for(j=0;j<5;j++) {
        z += (float)cal->yfb[j];
        zx += (float)(cal->yfb[j]*cal->x[j]);
        zy += (float)(cal->yfb[j]*cal->y[j]);
    }
// Now multiply out to get the calibration for framebuffer y coord
    cal->a[3] = (int)((a*z + b*zx + c*zy)*(scaling));
    cal->a[4] = (int)((b*z + e*zx + f*zy)*(scaling));
    cal->a[5] = (int)((c*z + f*zx + i*zy)*(scaling));
    //rt_kprintf("%f %f %f\n",(a*z + b*zx + c*zy),(b*z + e*zx + f*zy),(c*z + f*zx + i*zy));
// If we got here, we're OK, so assign scaling to a[6] and return
    cal->a[6] = (int)scaling;
    /*校准参数*/
    rt_kprintf("%d %d %d %d %d %d %d\n",cal->a[0],cal->a[1],cal->a[2],cal->a[3],
cal->a[4],cal->a[5],(int)cal->a[6]);

    /*测试下效果 x=2062 y=2109*/
    rt_kprintf("x %d\n", (cal->a[0] + cal->a[1]*2062 + cal->a[2]*2109 ) / cal->a[6]);
    rt_kprintf("y %d\n", (cal->a[3] + cal->a[4]*2062 + cal->a[5]*2109 ) / cal->a[6]);

    
    return 1;
    
}
int tscal(void)
{
    /*TP 5点采集值*/
    cal.x[0] = 677;
    cal.y[0] = 1032;
    cal.x[1] = 3431;
    cal.y[1] = 1040;
    cal.x[2] = 3432;
    cal.y[2] = 3209;
    cal.x[3] = 672;
    cal.y[3] = 3172;
    cal.x[4] = 2062;
    cal.y[4] = 2109;
    /*期望对应到哪些点*/
    cal.xfb[0] = 100;
    cal.yfb[0] = 100;
    cal.xfb[1] = 700;
    cal.yfb[1] = 100;
    cal.xfb[2] = 700;
    cal.yfb[2] = 380;
    cal.xfb[3] = 100;
    cal.yfb[3] = 380;
    cal.xfb[4] = 400;
    cal.yfb[4] = 240;
    perform_calibration(&cal);
    return 0;
}

MSH_CMD_EXPORT(tscal,tscal);

网上有现成的代码,感谢原作者。

#21 Re: 全志 SOC » AWTK 是否支持8bit灰度模式的内存屏幕? » 2020-06-11 05:51:45

好像作者李老师也在论坛里,怎么联系呢。。。

#22 全志 SOC » AWTK 是否支持8bit灰度模式的内存屏幕? » 2020-06-10 07:14:57

TivonLiu
回复: 1

出于性能的考虑,8bit模式应该更快

#23 Re: 全志 SOC » F1c100S裸机定时器寄存器问题 » 2020-06-07 07:58:17

是不是write32,read32宏,数据和地址是交换的,我以前好像遇到过

#24 Re: ST/STM8/STM8S/STM8L » 对音频信号进行FFT,采1024个点,采样频率为625hz,那第32个点刚好对应20k,是不是低33个点就是625hz? » 2020-06-03 11:58:12

采样频率为625Hz,带宽其实只有一半,不会采到高于312.5Hz的信号,除非降采样前没有做抗混叠滤波,造成高频率翻转干扰低频段。

#25 全志 SOC » 儿童节给大家的礼物,f1c200s,TF卡启动RTT的spl » 2020-06-01 15:32:51

TivonLiu
回复: 19

1 TF卡格式化为fat32格式
2 用winhex复制boot.bin到0x2000位置
3 拷贝文件rtthread.bin到TF卡根目录
4 reset,引导程序会将rtthread.bin拷贝到0x80000000开始运行

从此PCB不再需要那个spiflash芯片,空出一路spi接口,开心。。。


f1c100s_spl_0601.zip

#28 Re: DSP » TI C6745 游戏机:BlackPrism » 2020-04-03 20:19:42

楼主是真有爱,继续坚持。

#30 Re: 全志 SOC » 测试了一下RTT中用DMA和for循环拷贝128K花费的时间 » 2020-04-02 17:29:37

staunchheart 说:

原来玩RTT的还有这么多朋友呀,希望能与你加QQ。
我有些问题想请教。

请教不敢当,我早就在你的群中了,痴猫追风

#31 Re: 全志 SOC » 测试了一下RTT中用DMA和for循环拷贝128K花费的时间 » 2020-04-02 17:27:58

tomyqg 说:

ddr跑这么高,稳定不啊

默认312,瞎改,反正不会掉肉

#32 Re: 全志 SOC » 测试了一下RTT中用DMA和for循环拷贝128K花费的时间 » 2020-04-02 17:14:33

staunchheart 说:

能将测试的代码发出来作个参考吗?

dma.zip
写得乱,见笑了
启动命令cmptest

#33 全志 SOC » 求一款取图片像素值和生成字库点阵的工具 » 2020-04-02 16:00:42

TivonLiu
回复: 4

想用LCD显示点什么了,目前还没有硬解图像的方案,只能通过TF卡读入转换好的资源,希望大家分享几个工具,能生成文件的

#34 Re: 全志 SOC » 测试了一下RTT中用DMA和for循环拷贝128K花费的时间 » 2020-04-02 15:53:58

aozima 说:

CPU拷贝刷cache没?
for拷贝每次拷贝多少字节?

这些也会稍微影响性能。
不过这芯片的主频比总线快不少,所以这块影响不是很大。

cpu拷贝如果关cache就是最慢那个,开cache就是最快那个

所有拷贝都是关中断后进行的,计算时间使用的是硬件定时器

#35 Re: 全志 SOC » 请教大家一个问题,全志linux主线uart驱动里面控制一个io脚实现rs485功能,应该如何修改? » 2020-04-02 14:25:43

可能要自己写驱动吧,要熟悉驱动框架,非实时系统实现时序操作有困难吧。

#36 全志 SOC » 测试了一下RTT中用DMA和for循环拷贝128K花费的时间 » 2020-04-02 13:54:44

TivonLiu
回复: 13

tiny200 f1c200s

01-01 00:00:15.503 I/NO_TAG tshell: cp 128K used 1077 us whit for-circle-enCache,err 0
01-01 00:00:15.517 I/NO_TAG tshell: cp 128K used 1824 us whit DMA-disCache,err 0
01-01 00:00:15.525 I/NO_TAG tshell: cp 128K used 2037 us whit DMA-enCache,err 0
01-01 00:00:15.539 I/NO_TAG tshell: cp 128K used 5877 us whit for-circle-disCaches,err 0
periph_get_pll_clk:600000000
cpu_get_clk:408000000
ahb_get_clk:200000000
apb_get_clk:100000000
ddr_pll_get_clk:480000000

01-01 00:00:11.440 I/NO_TAG tshell: cp 128K used 1088 us whit for-circle-enCache,err 0
01-01 00:00:11.454 I/NO_TAG tshell: cp 128K used 1674 us whit DMA-disCache,err 0
01-01 00:00:11.462 I/NO_TAG tshell: cp 128K used 1888 us whit DMA-enCache,err 0
01-01 00:00:11.476 I/NO_TAG tshell: cp 128K used 5878 us whit for-circle-disCaches,err 0
periph_get_pll_clk:600000000
cpu_get_clk:408000000
ahb_get_clk:300000000
apb_get_clk:150000000
ddr_pll_get_clk:480000000

01-01 00:00:12.966 I/NO_TAG tshell: cp 128K used 1098 us whit for-circle-enCache,err 0
01-01 00:00:12.980 I/NO_TAG tshell: cp 128K used 1568 us whit DMA-disCache,err 0
01-01 00:00:12.987 I/NO_TAG tshell: cp 128K used 1781 us whit DMA-enCache,err 0
01-01 00:00:12.001 I/NO_TAG tshell: cp 128K used 5867 us whit for-circle-disCaches,err 0
periph_get_pll_clk:600000000
cpu_get_clk:408000000
ahb_get_clk:600000000
apb_get_clk:300000000
ddr_pll_get_clk:480000000

01-01 00:00:17.937 I/NO_TAG tshell: cp 128K used 1056 us whit for-circle-enCache,err 0
01-01 00:00:17.952 I/NO_TAG tshell: cp 128K used 1568 us whit DMA-disCache,err 0
01-01 00:00:17.959 I/NO_TAG tshell: cp 128K used 1674 us whit DMA-enCache,err 0
01-01 00:00:17.972 I/NO_TAG tshell: cp 128K used 5590 us whit for-circle-disCaches,err 0
periph_get_pll_clk:600000000
cpu_get_clk:600000000
ahb_get_clk:600000000
apb_get_clk:300000000
ddr_pll_get_clk:480000000

NDMA通道手册上最大传输128K,其实最大256K-1都可以,因为寄存器有18位,我试过暂时没有问题

#37 Re: DSP » TI C6745 游戏机:BlackPrism » 2020-04-02 12:44:47

Opcode 说:

感谢您的关注!

最近,我为桌面游戏机版本的旋转立方体修改了程序!

该控制台可通过编程方式绘制3D图形!

https://www.youtube.com/watch?v=NrAwHHGjqS4

https://whycan.cn/files/members/706/cube.png

该计划的来源: https://vrtp.ru/index.php?act=Attach&type=post&id=812670

可以在此论坛的主题中下载资源: https://vrtp.ru/index.php?showtopic=30775&st=0 smile

在此之前,他在STM32H743上做了另一个EMU-Pocket游戏机:
https://vrtp.ru/index.php?showtopic=30174

在这两个主题中,Keil ARM MDK和CCS v.6的源代码

你们国家的创意和游戏机呢? 只有少数人与我们一起从事这项工作,他们都是爱人!

我一直想做游戏机,2D像素风格,类似SFC

#38 Re: 全志 SOC » f1c100s怎样才能timer产生并进入中断? » 2020-04-01 20:09:46

Jin劲 说:

我目前是这样的
中断向量表正常
SVC模式 启动timer0 开启了timer0 irq enable
读cur value 寄存器得知timer0在跑 timer的pending标志是1
但是不进入中断 请教一下漏了哪些步骤
看demod的例子,也是没有中断的 只是循环查询pending标志位

1 高级中断管理器中的中断向量要打开
2 进中断第一条语句是pending写1清除挂起状态,不然一直进

#39 Re: 全志 SOC » 求助RTT中有无cache safe之类的内存分配函数? » 2020-04-01 20:01:31

aozima 说:

技术上可以做到。
MMU映射时,1:1映射1片无CACHE的空间。
这样正常出来的内存地址,做一下地址转换就行了。

参考

const struct mem_desc platform_mem_desc[] = {
	{0x00000000, 0x03FFFFFF, 0x00000000, NORMAL_MEM},	/* DDR 64M */
	{0x10000000, 0x13FFFFFF, 0x00000000, DEVICE_MEM},	/* 加这行 DDR 64M non-cache */
	{0xB0000000, 0xB3FFFFFF, 0xB0000000, DEVICE_MEM},	/* IO 64M */
	{0xFFF00000, 0xFFFFFFFF, 0xFFF00000, DEVICE_MEM},	/* SYS 1M */
};

但是
内存操作带CACHE,再刷cache.

性能远远高于无cache直接操作的。

这个方法不错,但是要定义变量地址,该咋操作哦。

#41 Re: 全志 SOC » 求助RTT中有无cache safe之类的内存分配函数? » 2020-04-01 18:14:32

Zodiac 说:

你的需求似乎Cortex-M架构上的MPU模块能满足,通过定义一个连续的地址片为MPU_ACCESS_NOT_CACHEABLE来实现。
一旦定义后,也无需OS进行什么特殊操作,普通malloc即可。

但至于F1C100s的ARM926EJ-S内核,应该只有MMU可用,好像没有类似的功能。
还是要在驱动里手动调用诸如:mmu_invalidate_dcache()mmu_clean_dcache()等函数来操作cache。

总之,上述功能应该不是OS的API范畴,与CPU架构关系很大。具体可以参考RTT的libcpu/arm/arm926里的相关实现。

谢谢你的建议,我似乎找到一个办法,就是单独定义一个地址区域,在mmu初始化时,这个区域不在管理范围内。

#42 Re: 全志 SOC » 求助RTT中有无cache safe之类的内存分配函数? » 2020-04-01 12:30:53

我想在RTT中,通过RTT提供的API,分配一片内存,这片内存不在cache的控制范围,这样使用这片内存就没有cache一致性的问题,我想问在RTT中有无这样的API?

#43 Re: 全志 SOC » F1c100s逆向了一下melis的TVD.DRV » 2020-04-01 07:34:49

这个比较牛X了,要有相当的功底,还要熟知大量同类资料

#44 Re: 全志 SOC » 全志F1C200S原理图+PCB(公版) » 2020-04-01 07:29:44

感谢,省了很多时间,不用画封装了。

#45 全志 SOC » 求助RTT中有无cache safe之类的内存分配函数? » 2020-04-01 06:24:53

TivonLiu
回复: 7

目前使用F1C200S的芯片,想在RTT中做DMA需要保证cache一致性。

#46 全志 SOC » 分享一份f1c200s定时器驱动 » 2020-03-30 13:41:16

TivonLiu
回复: 11

该驱动为HWTIMER的硬件实现部分,需要用menuconfig打开HWTIMER设备。
timer.zip

页脚

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

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