创龙瑞芯微RK3568交叉编译(c和驱动module)

前言

    由于项目需要,接触多个公司的RK3568,正点原子的,创龙的,迅为的。最后选择了创龙的。做了一段时间,发现给的教程和其他参考资料很少。所以必须一点一点得自己试验。以后的文章页会一点一点的写。希望给需要的小伙伴带个路。

资料中

    大部分功能在用户资料里面有,小伙伴一步步可以跟着做,仅仅说一般工程需要的。

    (1)灯

    灯的底层配置已经在设备树中配好了,直接echo就行!

    注:开发板的灯在边边上。开始的时候怎么点都不亮,最后才发现灯在边边上,半天没找到。

    (2)GPIO

    开发板没有直接引出GPIO,引出的都复用其他功能了,这个有点没办法。

    注:在class的gpio里面直接export就行,用到了就会busy,用不到就能export。

    (3)串口

    串口都搞成485和232了,没有TTL电平的。

    注:485口是有+和-的,利用485转232或者TTL的时候别接错了。

    (4)can

    直接根据资料中就可以发送。

    注:地址最大只能FFF,多了就没办法了。

测试

    (1)编译.c文件gcc

aarch64-buildroot-linux-gnu-gcc

    搜寻里面的gcc,有很多个,但是需要用的是这个,后面加上自己的文件名就行。为了方便,直接给个例程:

aarch64-buildroot-linux-gnu-gcc hello.c -o hello

    前面hello.c是自己的c文件,注意名字必须全对。虽然编译的是c文件,但是文件名后面最好有后缀。后面的hello是自己输出的名字,这个就随便了。

    注:c文件里面头自己添加了线程,交叉编译的时候并不用添加-lthread这个指令。

    下面给出具体具体函数:

#include <pthread.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include "fcntl.h"
#include <string.h>
#include <net/if.h>
#include <sys/socket.h>
#include <linux/can.h>
#include <linux/can/raw.h>

#include "sys/ioctl.h"

int count = 0;
void *thread_fun(void *arg) 
{
    while(1)
    {
        printf("led_running\n");
        count++;
        if(count == 1)
        {
            system("echo 1 > /sys/class/leds/user-led0/brightness");
            system("echo 0 > /sys/class/leds/user-led1/brightness");
        }
        if(count == 2)
        {
            system("echo 0 > /sys/class/leds/user-led0/brightness");
            system("echo 1 > /sys/class/leds/user-led1/brightness");
        }
        if(count == 2)count = 0;
        sleep(1);
    }
}

int main() 
{
    pthread_t tid;
    if (pthread_create(&tid, NULL, thread_fun, (void *)(&tid)) != 0) 
    {
        perror("pthread_led_create error");
        exit(1);
    }
    else
    {
        printf("led thread open correct\n");
    }
    pthread_join(tid,NULL);
}
     

    这个就是点灯函数,由于gpio没有办法引出来,所以只能用系统函数凑合。如果是真正的gpio,还需要在开始的时候export,这个是没办法的。

    (2)编译驱动ko文件

    网上查询了好多,结果都不能用,都没办法编译出ko文件,不是这错就是那错。最后才给弄出来。

    先来主函数myhello.c:

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>

static int __init hello_init(void)
{
    printk(KERN_INFO  "%s : enter\n", __func__);
    return 0;
}

static void __exit hello_exit(void)
{
    printk(KERN_INFO "%s : enter\n", __func__);
}

module_init(hello_init);
module_exit(hello_exit);

MODULE_AUTHOR("wang");
MODULE_DESCRIPTION("hello");
MODULE_LICENSE("GPL");

    这个是最简单的驱动函数,网上的教程很多,这个就不多说了。

    下面是make文件

    注:记住名字一定得是Makefile,其他的不行;

    注:里面的一定要自己敲,分清楚Tab和空格,切记。要不编译不过去。具体可以看看makefile怎么编写的,有现成的也不能直接用,复制过去的格式已经变了。

MVTOOL_PREFIX = /home/wang/RK3568/rk356x_linux_release_v1.3.1_20221120/buildroot/output/rockchip_rk3568/host/bin/aarch64-buildroot-linux-gnu-gcc
CROSS_COMPILE= $(MVTOOL_PREFIX)
KDIR := /home/wang/RK3568/rk356x_linux_release_v1.3.1_20221120/kernel


TARGET				=myhello
EXEC = $(TARGET)
obj-m :=$(TARGET).o
PWD :=$(shell pwd)
all:
	$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
	rm -rf *.o *~core.depend.*.cmd *.ko *.mod.c .tmp_versions $(TARGET)

    其中:

    MVTOOL_PREFIX:gcc的位置,这个搞了很久,还用另一个gcc的,也能编译过去,但是不敢保证最后是对的。aarch64-none-linux-gnu-gcc,并且位置不一样。

    注:存放位置一定要自己改写,从rk356x_linux_release_v1.3.1_20221120之后是一定的,前面的需要改到自己的位置。

    KDIR:内核的位置。这个和上面一样,前面的位置不一样,必须添加/kernel,如果不添加会报错。

    TARGET:你的文件名字。

    注:你的文件是xxx.c,这个是去掉.c之后的名字。中间生成有其他文件,名字也是这个,但是后缀不一样。所以必须这个地方必须是你文件的名字,不加后缀。

    下面是编译指令:

make ARCH=arm64

    注:这里后面的架构名称必须加上。这个地方卡了很久。其他平台上我都试验了,龙芯上,A40i上,正点原子的其他开发板上都试验了,都没啥问题。仅仅在这里出现一大堆错误。原来这个地方需要加上后面。记住直接make是不行的。

结语

    Linux的文件就这样,坑非常多,一点注意不到就不行了。后面会一点点的给大家写创龙的瑞芯微RK3568的知识。如果需要经常关注的小伙伴可以关注公众号,具体的翻看前面的文章,里面有具体的二维码。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 创龙C6678开发板是一款基于德州仪器(TI)公司的多核DSP(数字信号处理器)C6678芯片的开发板。该开发板具有强大的计算能力和丰富的外设接口,适用于高性能计算、视频处理、语音识别等领域的应用开发创龙C6678开发板的主要特点包括: 1. C6678芯片:搭载8个C66x内核的DSP,每个内核工作频率高达1.25GHz,能够提供高达320GMACS的浮点运算性能,支持双精度浮点运算。 2. 内存配置:开发板配备了2GB DDR3内存,可以满足复杂应用的内存需求。 3. 外设接口:提供了多种常用接口,包括以太网口、USB接口、串口等,方便扩展外部设备连接。 4. 存储空间:支持2GB的NAND Flash作为存储介质,以及一个SD卡槽,方便存储和加载应用程序和数据。 5. 视频接口:支持HDMI和VGA接口,可以连接显示器进行图像输出。 6. 开发环境:提供了基于Code Composer Studio(CCS)的开发工具链,方便开发者进行软件开发和调试。 7. 软件支持:开发板支持多种操作系统,包括Linux、Windows等,使开发者可以选择适合自己的操作系统环境进行开发。 总之,创龙C6678开发板集成了高性能的多核DSP芯片和丰富的外设接口,为开发者提供了一个强大且灵活的开发平台。无论是进行高性能计算还是视频处理等应用开发,该开发板能够满足需求,并提供便捷的开发工具和软件支持。 ### 回答2: 创龙C6678开发板是一款专为高性能计算和信号处理设计的开发平台。该开发板基于德州仪器(TI)的C6678多核DSP处理器,搭载了8个TMS320C6678处理核心,每个核心运行主频为1.25GHz,具备强大的浮点运算能力和并行处理能力。 创龙C6678开发板提供了丰富的资料和资源,方便开发人员进行项目开发和系统调试。其主要资料包括: 1. 开发板手册:详细介绍了开发板的硬件组成、接口定义、信号引脚定义等信息,开发者可以根据手册进行硬件连接和系统调试。 2. 技术支持文档:包括使用指南、应用笔记和白皮书等,介绍了开发板的应用场景、特性和最佳实践,帮助开发者更好地了解和应用该开发板。 3. 软件开发工具链:包括编译器、调试器、编程接口等,可以帮助开发者进行程序开发和调试。 4. 示例代码和工程模板:提供了一些基于创龙C6678开发板的示例代码和工程模板,开发者可以借鉴和参考这些代码来快速开发自己的应用程序。 5. 接口资料和参考电路图:提供了开发板上各个接口的信号定义和电路图,开发者可以根据这些资料进行硬件设计和接口连接。 总之,创龙C6678开发板的资料丰富全面,可以帮助开发者快速入门,进行高性能计算和信号处理的开发工作。 ### 回答3: 创龙C6678开发板是德州仪器(Texas Instruments)推出的高性能数字信号处理器(DSP)开发板。该开发板基于德州仪器的C6678 DSP芯片,拥有八个DSP核心,运行频率高达1.25GHz,适用于各种高性能计算和信号处理应用。 创龙C6678开发板的资料包括硬件资料和软件资料。硬件资料提供了关于开发板的电路原理图、PCB设计文件以及外围接口的说明,帮助开发者了解开发板的硬件架构和设计,并进行硬件设计和调试。软件资料主要包括开发板的Bootloader、驱动程序和应用软件的源代码,可以帮助开发者进行软件开发和调试,快速构建自己的应用。 除了硬件和软件资料,创龙C6678开发板还提供了丰富的开发资源。例如,德州仪器提供了基于C6678的DSP开发套件(SDK),该SDK包含了各种软件库和示例代码,方便开发者快速上手并进行应用开发。此外,德州仪器还提供了技术支持和社区论坛,开发者可以在这里得到答疑解惑,和其他开发者进行交流。 总之,创龙C6678开发板是一款强大的高性能DSP开发平台,拥有丰富的硬件和软件资料,能够满足开发者在高性能计算和信号处理领域的需求。无论是学习使用DSP还是进行应用开发创龙C6678开发板都是一个不错的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值