【GoRK3288】1.Rockchip RK3288, GO!GO!!GO!!!

本文介绍如何使用Google推出的Go语言开发UIO驱动程序,旨在简化嵌入式开发流程,提高开发效率。文章涵盖了Go语言环境搭建、开发工具选择等内容。
前言: 
    最近看了看Google的Go语言,发现有点意思,这个开源的项目准备用golang来实现。
    其实开发板本身的驱动程序已经实现了各个功能,但是有的时候在使用中有些麻烦,有可能需要修改dts文件重新编译内核才能够使用某个功能,所以打算开发这个UIO驱动的开源项目,方便程序的编写。当然,UIO也不是万能的,比如中断, 目前我还没有找到好的方法,可以 完全抛开内核版本的差异导致需要重新编译驱动来提供中断消息
    按照惯例首先还是先从Go语言的介绍、开发环境的安装开始,然后稍微讲解下本项目所涉及到的Go的语法,后面再来看看整个工程的文件组成及各个库的使用方法。
    由于瑞芯微的开发参考手册一般不对个人开放,但是经过天启科技公司 (后文简称Firefly 的努力, 公布 了全部源代码  及  部分的文档,使开发能够顺利进行,所以这个开源项目基于Firefly-RK3288开发板的Lubuntu环境下开发。


   
Go语言是谷歌2009发布的第二款开源编程语言, 专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程,而且可以在不损失应用程序性能的情况下降低代码的复杂性。
    虽然Go尚未成熟,但谷歌旗下App Engine和其他部分产品已经开始使用go语言来编写,Go的网站就是用Go所建立。该软件是专为构建服务器软件所设计(如Google的Gmail)。Google认为Go还可应用到其他领域,包括在浏览器内执行软件,它将成为互联网时代的C语言。
    Go可以编译为本地原生程序,编译后的程序已经包括了运行时库,单单一个文件在部署时直接扔到其他板子同种平台上即可直接运行,非常方便。同时使用Go建立的工程,只要不牵扯到操作系统特有的功能或接口,可以不做改动直接在Windows、Linux、ARM上编译,并且现在已经支持Android的开发(1.4版),预计下一版将支持IOS的开发。这些特点和Free Pascal是一样的。
    Go目前欠缺的地方:暂时没有图形界面(官方未发布),暂时没有专用的开发工具(ARM Linux上则更少)

    随着物联网技术的兴起,使用Go的高并发特性来实现控制服务器将会大大提高运行的性能简化开发的难度,而且可以作为一个节点控制着各种外设。这个节点设备甚至可以是ARM系统,并且核心越多性能越高,所以本次开发采用了高性能的Firefly-RK3288开发板进行开发。

    提到Firefly-RK3288开发板,我不得不再次赞一下,这个开发板的设计非常用心,各种元件的安排不拥挤、不松散,赏心悦目。至于RK3288的性能就不用说了,同种方案的平板性能测试已经非常详细了。如果希望了解该开发板的更多特性,可以参考这篇评测文章http://www.eeboard.com/evaluation/firefly-rk3288-review/




    OK,板子说完了,再说说Go语言编译环境吧。在Lubuntu下安装Go非常简单,可以直接从新立德里搜索安装。不过呢,这里的版本有点低,1.2x。现在1.4.2已经发布了,自己编译一下也不麻烦,而且这个板子的性能很高,包括所有的测试在内也就10分钟左右。

    下载,到
https://github.com/golang/go下载zip文件或者直接git,不习惯的话去http://golangtc.com/download直接下载tar.gz包也可以。
    安装,最省事的方法是解压到/home/go里,然后进入到src目录,运行all.bash就开始自动编译了。大约10分钟左右,编译完成,打开/home里的.profile文件,在最后添加:


保存重启,Go的环境已经搭建好了。

    接下来,安装一个比较方便一点的编辑环境吧。Go语言目前还没有专用的IDE开发环境,一般在Windows上或Linux使用LiteIDE、Ecplise、 SublimeText等,不过到了ARM环境下由于源里的版本比较低,用起来麻烦,所以在试了几个工具后发现gedit和Geany还可以。
    这里就以Geany为例进行安装。还是到 
新立德 搜索Geany,版本是1.23,默认已经支持Go的高亮和代码自动完成功能了。安装的东西很少很快


    标记之后包括依赖只有两项,geany主文件和geany-common,点击应用开始安装。


    安装之后可以打开或新建Go文件了,语法高亮看着比较舒服。


    编译和运行也比较方便。虽然没有Debug调试功能和断点设置,不过暂时够用了。 
 
    GoRK3288库请在 https://github.com/tjCFeng/GoRK3288下载。


07-11
Gork 是一个与人工智能领域相关的技术术语,它可能指的是一个工具、框架或平台,用于支持大型语言模型(LLM)的运行和开发。特别是在提到使用 OpenWeb-UI 接入 Gork 的情况下,这表明 Gork 可能提供了一种接口或服务,使得用户能够通过 OpenWeb-UI 这样的图形界面来利用 Gork 提供的功能[^1]。 OpenWeb-UI 作为一个可扩展、功能丰富且用户友好的自托管 WebUI,它的设计目的是为了能够在完全离线的情况下运行,并且支持多种 LLM 运行器,包括但不限于 Ollama 和 OpenAI 兼容 API。这意味着,当提到接入 Gork 时,可能是通过类似于 OpenWeb-UI 的工具来实现对 Gork 所提供的特定功能的访问,比如执行本地的 LLM 模型或者调用特定的 API 来完成某些任务[^1]。 尽管具体的细节没有给出,但可以推测 Gork 可能在某些方面具有独特性,例如在数学、科学以及编程等领域的应用中展现出优势,或者是通过采用超大规模的计算资源投入和先进的推理机制来提升性能。此外,如果 Gork 拥有多模态功能并与特斯拉这样的公司有整合,那么它的应用场景可能会更加广泛,不仅限于传统的文本处理,还可能涵盖图像识别、自动驾驶等多个领域[^3]。 然而,值得注意的是,任何关于 Gork 的讨论都必须考虑到潜在的问题与挑战,如高昂的训练成本、数据偏见的风险以及来自市场的激烈竞争等因素[^3]。这些因素对于评估 Gork 的实际价值和发展前景至关重要。 ### 快速排序的基本思想 快速排序是一种高效的排序算法,其基本思想是选择一个基准元素,然后将数组中的其他元素分为两组:一组包含所有小于基准值的元素,另一组包含所有大于基准值的元素。这个过程递归地应用于这两组数据,直到整个数组有序。 ```python def quick_sort(arr): if len(arr) <= 1: return arr else: # 选择基准值 pivot = arr[len(arr) // 2] # 分别存放比基准小和大的元素 left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot] # 递归地对左右两边进行快排,并合并结果 return quick_sort(left) + middle + quick_sort(right) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值