PHPOA!国内首家专业OA办公软件、OA系统、政务办公开源oa系统服务提供商,采用PHP+MYSQL开源语言,一直致力于应用管理软件基层研发,现己推出企业OA、政府OA、集团OA、SAAS版OA等应用平台,详细咨询13807814037
现在论坛购买,只需588元
翠屏区政府公文系统:伊春区政府办公
政务OA系统中tina_linux_系统软件 开发指南不断地进行革新和升级。政府
OA办公系统作为一种高效、便捷的办公工具,已经成为政府机构不可或缺的一部分。本文将探讨政府oa盖所有的开发知识和问题。文档列表也正在不断更新。
tina sdk提供丰富的文档资料,包括硬件参考设计文档、flash等基础器件支持列表、量产工具使用说明、软件开发与制定介绍文档、芯片研发手册等资料。
2.2 文档列表
请以全志科技全志客户服务平台最新列表为准。
3 tina系统概述
3.1 概述
tina linux系统是基于openwrt-14.07的版本的软件开发包,包含了linux系统开发用到的内核源码、驱动、工具、系统中间件与
六个关键词解读运营商大数据:灯塔大数据总负责人杨明川博士在会上做了《运营商大数据的六个关键词》的主题演讲。演讲中,杨博士从三个维度,六个关键词阐明了运营商大数据未来的发展现状与机遇。以下为演讲原文。
宏观层面,“十三五”规划提到的供给侧改革,为大数据产业发展提供了三个方向,即政府治理;产业转型,特别是传统行业的转型;消费升级。中观层面,我们正在面临一次新的产业革命。
依此为基础,我们也开发了如灯塔等的一些应用。如何将数据资源变为数据能力,实现数据和运营之间的联系,是未来大数据产业发展的关键点。第三个关键词是生态。
而真正适合大数据应用的行业主要集中以下三个层面,一是政府治理,大到未来政府转型治理,建立新型智慧城市,小到治安维稳、交通管理和分析等方面都离不开大数据。在政府治理方面,大数据能够做的事很多。
内容来源:灯塔大数据
nginx, redis, mysql配置文件说明:nginx中etcnginxnginx.conf的常用配置及说明# 指定nginx worker进程运行用户, 语法: user user user nginx; # worker进程数, 通常设置成和
# 加载一个外部的配置文件, sites-enabled文件夹下只有一个default文件, # 这个外部的配置文件就是负责我们nginx的默认代理, 也就是server块的配置. include etcnginxsites-enabled
nginx中etcnginxsites-enableddefault的常用配置及说明server { # nginx监听的ip及端口号, 可以监听多个 listen 127.0.0.1:80; # nginx
3# 为提高性能,mysql可以以循环方式将日志文件写到多个文件。
# 在系统运行一段时间后,可以通过show processlist命令查看当前系统的连接状态,如果发现有大量的sleep状态的连接进程,则说明该参数设置的过大,# 可以进行适当的调整小些。
internet与中国:由于当时中国尚未正式连入internet,所以委托德国卡尔斯鲁厄大学运行cn域名服务器1993年3月2日中国科学院高能物理研究所租用at&t公司的国际卫星信道接入美国斯坦福线性加速器中心(slac)的64k
尽管如此,这条专线仍是我国部分连入internet的第一根专线中国互联网连接世界1885年中国台湾建省,首任巡抚刘铭传派人与福州船政联系,使用船政电报学堂毕业生为技术人员,于1887年铺设成功中国台湾淡水至福州川石海底电缆
此电缆毁于第二次世界大战我国于1989年开始投入到全球海底光缆的投资与建设中来,并于1993年实现了首条国际海底光缆的登陆(中日之间c-j海底光缆系统);随后在1997年,我国参与建设的全球海底光缆系统
1998年6月18日刘强东在中关村创办京东公司,代理销售光磁产品1998年11月马化腾和张志东成立深圳市腾讯计算机系统有限公司,oicq开通1998年12月新浪网成立,关键人物:王志东2000年1月李彦宏创建了百度
2003年5月阿里巴巴集团在创立淘宝网2003年10月淘宝网首次推出支付宝服务2004年1月京东多媒体网正式开通,启用域名www.jdlaser.com2010年4月雷军创办小米2011年1月21日腾讯公司推出微信
成功运作一个开源项目的 15 个要点:运作开源项目很容易。所有你需要做的就是让你的源代码可用和开源,对吧?嗯,也许。其实,开源项目是否成功取决于你对项目成功的定义。且不论你是怎么定义的,创建开源项目需要大量的工作。
1、定义成功在考虑运作开源项目之前,你需要明确定义成功的意义。这里有很多因素要考虑。只将代码放入可公开访问的存储库就可以了,还是说你想对你的项目做更多?合作与采用对你来说重要吗?
2、透明这一点很容易理解:我们要使得社区可以观察和了解你正在做的事情:使用易于查找的可公开访问的源代码存储库,使用面向公众的问题跟踪软件,在社区可以找到的地方公布发布计划,以及在公共论坛捕获会议记录(例如归档邮件列表
对于许多人来说,开源的“开放”意味着开放新思想,或开放参与。参与开源项目的规则对于每个人应该是一样的(“公平的竞争环境”):仅仅接受几个补丁是不够的,你必须对新的思路点子开放。
基金会可以为你的开源项目提供可信度,然后,开源项目反过来可以为基金会提供公信力。运作开源项目包含很多工作。但是,正如我们所建议的,它所需要的工作量取决于你对项目成功的定义。
翠屏区政府公文系统:伊春区政府办公政务OA系统中tina_linux_系统软件 开发指南化管理方面的重要性。首先,政府
OA办公系统的作用之一是提升工作效率。传统的办公方式往往需要大量的纸质文件和繁琐的手工操作,而
OA办公系统通过数字化处理和自动化流程,极大地简化了
公文系统程。无论是文件的传输、审批流程的管理还是信息的查询与共享,都可以通过
政务OA系统实现快速、高效的完成。这不仅节省了大量的时间和人力成本,还能够提高工作效率,使政府机构能够更好地服务于民众。其次,政府
OA办公系统在优化管理方面也发挥着重要的作用。政府机构通常需要处理大量的文件和数据,而这些信息的管理和整理对于机构的运行至关重要。通过
OA办公系统,政府机构能够实现对文件和数据的统一管理、分类存档和快速检索,极大地提高了信息管理的效率和准确性。同时,
政务OA系统还可以通过权限设置和审批流程的规范化,确保政府机构的决策和工作程序tina_linux_系统软件 开发指南
1 概述
编写目的:本文档作为allwinner tina linux系统平台开发指南,旨在帮助软件开发工程师、技术支持工程师快速上手,熟悉tina linux系统的开发及调试流程。
适用范围:tina linux v3.5及以上版本。
2 tina系统资料
2.1 概述
tina sdk发布的文档旨在帮助开发者快速上手开发及调试,文档中涉及的内容并不能涵盖所有的开发知识和问题。文档列表也正在不断更新。
tina sdk提供丰富的文档资料,包括硬件参考设计文档、flash等基础器件支持列表、量产工具使用说明、软件开发与制定介绍文档、芯片研发手册等资料。
2.2 文档列表
请以全志科技全志客户服务平台最新列表为准。
3 tina系统概述
3.1 概述
tina linux系统是基于openwrt-14.07的版本的软件开发包,包含了linux系统开发用到的内核源码、驱动、工具、系统中间件与应用程序包。openwrt是一个开源的嵌入式linux系统自动构建框架,是由makefile脚本和kconfig配置文件构成的。使得用户可以通过menuconfig配置,编译出一个完整的可以直接烧写到机器上运行的linux系统软件。
3.2 系统框图
tina系统软件框图如图所示,从下至上分为kernel && driver、libraries、system ser-vices、applications四个层次。各层次内容如下:
kernel&&driver主要提供linux kernel的标准实现。tina平台的linux kernel 采用linux3.4、linux3.10、linux4.4、linux4.9等内核(不同硬件平台可能使用不同内核版本)。提供安全性,内存管理,进程管理,网络协议栈等基础支持;主要是通过linux内核管理设备硬件资源,如cpu调度、缓存、内存、i/o等。
libraries层对应一般嵌入式系统,相当于中间件层次。包含了各种系统基础库,及第三方开源程序库支持,对应用层提供api接口,系统定制者和应用开发者可以基于libraries层的api开发新的应用。
system services层对应系统服务层,包含系统启动管理、配置管理、热插拔管理、存储管理、多媒体中间件等。
applications层主要是实现具体的产品功能及交互逻辑,需要一些系统基础库及第三方程序库支持,开发者可以开发实现自己的应用程序,提供系统各种能力给到最终用户。
3.3 开发流程
tina linux 系统是基于 linux kernel,针对多种不同产品形态开发的 sdk。可以基于本
sdk,有效地实现系统定制和应用移植开发。
如上图所示,开发者可以遵循上述开发流程,在本地快速构建tina linux系统的开发环境和编译
代码。下面将简单介绍下该流程:
检查系统需求:在下载代码和编译前,需确保本地的开发设备能够满足需求,包括机器的硬件能力,软件系统,工具链等。目前tina linux系统只支持ubuntu操作系统环境下编译,并仅提供linux环境下的工具链支持,其他如macos,windows等系统暂不支持。
搭建编译环境:开发机器需要安装的各种软件包和工具,详见开发环境章节,获知tinalinux已经验证过的操作系统版本,编译时依赖的库文件等。
选择设备:在编译源码前,开发者需要先导出预定义环境变量,然后根据开发者根据的需求,选择对应的硬件板型,详见编译章节。
系统定制:开发者可以根据使用的硬件板子、产品定义,定制u-boot、kernel及open-wrt,请参考后续章节中相关开发指南和配置的描述。
编译与打包:完成设备选择、系统定制之后执行编译命令,包括整体或模块编译以及编译清理等工作,进一步的,将生成的boot/内核二进制文件、根文件系统、按照一定格式打包成固件。详见编译打包章节。
烧录并运行:继生成镜像文件后,将介绍如何烧录镜像并运行在硬件设备,进一步内容详见系统烧写章节。
4 tina开发环境
4.1 概述
嵌入式产品开发流程中,通常有两个关键的步骤,编译源码与烧写固件。源码编译需要先准备好
编译环境,而固件烧写则需要厂家提供专用烧写工具。本章主要讲述这如何搭建环境来实现tinasdk的编译、烧写。
4.2 编译环境搭建.
一个典型的嵌入式开发环境包括本地开发主机和目标硬件板。
本地开发主机作为编译服务器,需要提供linux操作环境,建立交叉编译环境,为软件开发提供代码更新下载,代码交叉编译服务。
本地开发主机通过串口或usb与目标硬件板连接,可将编译后的镜像文件烧写到目标硬件板,并调试系统或应用程序。
4.2.1 开发主机配置.
tina linux sdk是在ubuntu14.04开发测试的,因此我们 推荐使用ubuntu 14.04 主机环境进行源码编译,其他版本没有具体测试,可能需要对软件包做相应调整。
4.2.2 软件包配置.
编译tina linux sdk 之前,需要先确定编译服务器安装了gcc,binutils,bzip2,flex,python,perl,make,ia32-libs,find,grep,diff,unzip,gawk,getopt,subver-sion,libz-dev,libc headers。
ubuntu可直接执行以下命令安装:
代码语言:javascript
复制
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawkflex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip ia32-libslib32z1 lib32z1-dev lib32stdc++6 libstdc++6 -y
ubuntu 16.04及以上版本,执行下面命令安装软件包:
代码语言:javascript
复制
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip lib32z1 lib32z1-dev lib32stdc++ libstdc++6 -y libc6:i386 libstdc++6:i386 lib32ncurses5 lib32z
5 tina系统获取
5.1 概述
5.2 sdk获取
allwinner tina linux sdk通过全志代码服务器对外发布。客户需要向业务/技术支持窗口申请sdk下载权限。申请需同步提供ssh公钥进行服务器认证授权,获得授权后即可同步代码。
5.3 sdk结构
tina linux sdk主要由构建系统、配置工具、工具链、host工具包、目标设备应用程序、文档、脚本、linux内核、bootloader部分组成,下文按照目录顺序介绍相关的组成组件。
代码语言:javascript
复制
tina-sdk/
├── build
├── config
├── config.in
├── device
├── dl
├── docs
├── lichee
├── makefile
├── out
├── package
├── prebuilt
├── rules.mk
├── scripts
├── target
├── tmp
├── toolchain
└── tools
5.3.1 build目录
build目录存放tina linux的构建系统文件,此目录结构下主要是一系列基于makefile规格编
写的mk文件。主要的功能是:
检测当前的编译环境是否满足tina linux的构建需求。
生成host包编译规则。
生成工具链的编译规则。
生成target包的编译规则。
生成linux kernel的编译规则。
生成系统固件的生成规则。
代码语言:javascript
复制
build/
├── autotools.mk
├── aw-upgrade.mk
├── board.mk
├── cmake.mk
├── config.mk
├── debug.mk
├── depends.mk
├── device.mk
├── device_table.txt
├── download.mk
├── dumpvar.mk
├── envsetup.sh
5.3.2 config目录
config目录主要存放tina linux中配置菜单的界面以及一些固定的配置项,该配置菜单基于内
核的mconf规格书写。
代码语言:javascript
复制
config/
├── config-build.in
├── config-devel.in
├── config-images.in
├── config-kernel.in
└── top_config.in
5.3.3 devices目录
devices目录用于存放方案的配置文件,包括内核配置,env配置,分区表配置,sys_config.fex,
board.dts等。
这些配置在旧版本上是保存于target目录下,新版本挪到device目录。
注意defconfig仍保存在target目录。
代码语言:javascript
复制
device/
└── config
├── chips
├── common
└── rootfs_tar
快捷跳转命令:cconfigs
5.3.4 docs目录
docs目录主要存放用于开发的文档,以markdown格式书写。
本目录不再更新,请以全志客户服务平台系统文档为准。
代码语言:javascript
复制
docs/
├── build.md
├── config.md
├── init-scripts.md
├── makefile
├── network.md
├── tina.md
├── wireless.md
└── working.md
5.3.5 lichee目录
lichee目录主要存放bootloader,内核,arisc,dsp等代码。
代码语言:javascript
复制
lichee/
├── bootloader
│ ├── uboot_2011_sunxi_spl
│ └── uboot_2014_sunxi_spl
├── brandy
│ ├── u-boot-2011.09
│ └── u-boot-2014.07
├── brandy-2.0
│ ├── spl
│ ├── tools
│ └── u-boot-2018
├── linux-3.4
├── linux-3.10
├── linux-4.4
├── linux-4.9
├── arisc
快捷跳转命令:ckernel,cboot,cboot0,carisc。
5.3.6 package目录
package目录存放target机器上的软件包源码和编译规则,目录按照目标软件包的功能进行分
类。
代码语言:javascript
复制
package/
├── allwinner
├── base-files
├── devel
├── dragonst
├── firmware
├── kernel
├── ......
└── utils
5.3.7 prebuilt目录
prebuild目录存放预编译交叉编译器,目录结构如下。
代码语言:javascript
复制
prebuilt/
└── gcc
└── linux-x86
├── aarch64
│ ├── toolchain-sunxi-musl
│ └── toolchain-sunxi-glibc
├── arm
│ ├── toolchain-sunxi-arm9-glibc
│ ├── toolchain-sunxi-arm9-musl
│ ├── toolchain-sunxi-glibc
│ ├── toolchain-sunxi-musl
└── host
└── host-toolchain.txt
5.3.8 scripts目录
scripts目录用于存放一些构建编译相关的脚本。
代码语言:javascript
复制
scripts/
├── arm-magic.sh
├── brcmimage.pl
├── bundle-libraries.sh
├── checkpatch.pl
├── clang-gcc-wrapper
├── cleanfile
├── clean-package.sh
├── cleanpatch
├── ......
5.3.9 target目录
target目录用于存放目标板相关的配置以及sdk和toolchain生成的规格。
代码语言:javascript
复制
target/
├── allwinner
├── config.in
├── imagebuilder
├── makefile
├── sdk
└── toolchain
快捷跳转命令:cdevice。
5.3.10 toolchain目录.
toolchain目录包含交叉工具链构建配置、规则。
代码语言:javascript
复制
toolchain/
├── binutils
├── config.in
├── fortify-headers
├── gcc
├── gdb
├── glibc
├── info.mk
├── insight
├── kernel-headers
├── makefile
├── musl
└── wrapper
5.3.11 tools目录.
tools目录用于存放host端工具的编译规则。
代码语言:javascript
复制
tools/
├── autoconf
├── automake
├── aw_tools
├── b43-tools
├── ......
5.3.12 out目录.
out目录用于保存编译相关的临时文件和最终镜像文件,编译后自动生成此目录,例如编译方案
r328s2-perf1。
代码语言:javascript
复制
out/
├── r328s2-perf
└── host
其中host目录用于存放host端的工具以及一些开发相关的文件。
r328s2-perf1目录为方案对应的目录。方案目录下的结构如下:
代码语言:javascript
复制
out/r328s2-perf
├── boot.img
├── compile_dir
├── image
├── md5sums
├── packages
├── r328s2-perf1-boot.img
├── r328s2-perf1-uimage
├── r328s2-perf1-zimage
├── rootfs.img
├── sha256sums
├── staging_dir
└── tina_r328s2-perf1_uart0.img
boot.img为最终烧写到系统boot分区的数据,可能为boot.img格式也可能为uimage格式。
rootfs.img为最终烧写到系统rootfs分区的数据,该分区默认为squashfs格式。
r328s2-perf1-zimage为内核的zimage格式镜像,用于进一步生成uimage。
r328s2-perf1-uimage为内核的uimage格式镜像,若配置为uimage格式,则会拷贝成boot.img。
r328s2-perf1-boot.img为内核的boot.img格式镜像,若配置为boot.img格式,则会拷贝成boot.img
compile_dir为sdk编译host,target和toolchain的临时文件目录,存有各个软件包的源码。
staging_dir为sdk编译过程中保存各个目录结果的目录。
packages目录保存的是最终生成的ipk软件包。
tina_r328s2-perf1_uart0.img为最终固件包(系统镜像),串口信息通过串口输出
若使用pack -d,则生成的固件包为xxx_card0.img,串口信息转递到tf卡座输出。
快捷跳转命令:cout。
5.4 sdk更新
sdk更新分为两类:一类是以补丁的形式发布到一号通,发布后系统以邮件形式通知开发者;另一类是定期(半年或季度)的小版本迭代升级,将过往的补丁合入到sdk中,发布后以系统邮件通知开发者,可基于干净的sdk包通过repo sync命令更新。
5.5 问题反馈
allwinner提供全志客户服务平台(https://open.allwinnertech.com),用来登记客户遇到的
问题以及解决状态。方便双方追踪,使问题处理更加高效。后续sdk问题、技术问题、技术咨询
等都可以提交到此系统上,allwinner技术服务会及时将问题进行分发、处理和跟踪。
注:系统登录帐号需要与allwinner开通确认。
6 tina编译打包
6.1 概述
6.2 编译系统
代码语言:javascript
复制
(1) source build/envsetup.sh
(2) lunch
(3) make [-jn]
(4) pack [-d]
其中,
步骤(1)建立编译环境,导出编译变量。
步骤(2)提示需要选择你想要编译的方案。
步骤(3)参数n为并行编译进程数量,依赖编译服务器cpu核心数,如 4 核pc,可"make -j4"
步骤(4)打包固件,-d参数使生成固件包串口信息转到tf卡座输出。
编译完成后系统镜像会打包在out/<board>/目录下
6.3 编译boot
命令
命令有效目录
作用
mboot
tina下任意目录
编译boot0和uboot
mboot0
tina下任意目录
编译boot0
muboot
tina下任意目录
编译uboot
6.4 编译内核
命令
命令有效目录
作用
mkernel
tina下任意目录
编译内核
6.5 编译arisc
arisc是aw平台对cpus代码环境的代称,主要功能是负责休眠,关机等底层操作。它包含
cpus运行所需的驱动,库及工具链等,编译产生scp.bin,然后打包在tina镜像中,有boot-
loader在启动时加载到cpus域运行。
tina中提供了如下与arisc相关的跳转、编译命令
命令
命令有效目录
作用
carisc
tina下任意目录
跳转到cpus代码工程目录
mkarisc
tina下任意目录
编译cpus代码
在tina中,编译arisc代码有两种方式,如下:
第一种方式,跳转到arisc代码路径下,使用make编译
arisc代码库具有独立的工具链和构建体系,因此对arisc代码的编译,也可以cd到对应的路径
下,执行make命令。但需注意,此时需要手动将生成的scp.bin文件拷贝到sdk的bin文件
路径下,覆盖对应的文件(一般路径是tina/device/config/chips/${平台名}/bin)。
操作如下,
代码语言:javascript
复制
step1
使用carisc或cd命令跳转到arisc代码环境下,一般为tina/lichee/arisc/ar100s。
step2
生成必要的配置。在arch/configs/下,存在许多defconfig默认配置文件,可根据axp型号选择使用,例如make sun50iw10p1_axp803_defconfig。此操作将会在arisc根目录生成.config。
step3
修改默认配置,可使用make menuconfig。此操作会生成配置菜单,按需选择配置即可,该操作会修改.config。如需重新使用默认配置,重新执行step2即可。
step4
使用make命令编译
step5
将scp.bin拷贝到tina的bin目录,即cbin可跳转的目录即可。如/tina/device/config/chips/r818/binstep6
若需清理工程,可使用make clean
step7
如需提交defconfig配置修改,可使用make savedefconfig命令。此命令会根据.config在arisc根目录生成 defconfig。将defconfig拷贝到arch/configs/下,覆盖对应配置文件即可。
注意:
一般来说,arisc执行的功能较为底层,多与休眠,关机等操作相关,对稳定性要求较高。我们不
建议客户自己修改任何相关配置和代码,如必须,请与我司联系或执行足够的稳定性测试。
第二种方式,使用mkarisc命令
如上述方法所述,tina为了解决arisc编译后还需手动拷贝的问题,tina提供了这个快捷命令
mkarisc。需要指出的是:目前只支持r818、mr813的arisc代码编译。
操作如下,较为简单
代码语言:javascript
复制
step1
配置tina环境,如soure build/envsetup.sh, lunch等操作。
step2
使用mkarisc编译即可或直接编译tina,在编译tina时,也会自动调用mkarisc命令。
注意:
使用mkarisc命令编译时,会自动读取board.dts获取axp型号,然后使用对应的默认配置文
件编译。如board.dts中指定使用“x-powers,axp803”时,mkarsic命令会使用arisc工程环
境下的sun50iw10p1_axp803_defconfig配置文件编译。此时,若您需要修改该arisc配置,
只能先修改该配置文件后编译,除此外不接受其他配置修改的方式。
6.6 编译e907固件(v85x平台异构amp核)
e907是v85x平台amp cpu的代称,其主要功能是提供通用算力补充、辅助linux实现快起
等。它包含e907运行所需的驱动、库及工具链等,编译产生riscv.fex,打包到tina镜像中,
由bootloader在启动时加载到risc-v核上运行。
在tina sdk中,编译e907 riscv代码如下:
e907 riscv 代码库具有独立的工具链和构建体系,因此对 e907 固件的编译,也可以跳
转到对应的路径下,执行命令。但需注意,此时需要手动将生成的 melis30.elf 文件拷贝
到 sdk 的 bin 文件路径下,覆盖对应的文件(一般路径是 device/config/chips/${平台
名}/configs/default/riscv.fex)。
操作如下,
代码语言:javascript
复制
step1
使用cd命令跳转到e907代码环境下,一般为rtos-dev/lichee/melis-v3.0/source
step2
source melis-env.sh
step3
lunch v853-e907-ver1-board
step4
make menuconfig
step5
make -j
step6
如需减少存储空间,可裁剪调试信息,在melis source目录执行:riscv64-unknown-elf-strip ekernel/melis30.elf
step7
拷贝并重命名成riscv.fex替换掉tina/device/config/chips/v853/configs/default目录下的riscv.fex
cp ekernel/melis30.elf /home/xxx/tina/device/config/chips/v853/configs/default/riscv.fex
step8
tina系统目录执行打包命令pack
6.7 重编应用
请确保进行过一次固件的编译,确保sdk基础已经编译,才能单独重编应用包。重编应用包应用场景一般为: 只修改了应用,不想重新烧写固件,只需要安装应用安装包即可 。请确保在编译前已加载tina环境:
代码语言:javascript
复制
$ source build/envsetup.sh
$ lunch
6.7.1 方法一
当在应用包的目录(包括其子目录)中,可执行
代码语言:javascript
复制
$ mm [-b]
=> b参数则先clean此应用临时文件再编译
示例:假设软件包路径为:tina/package/utils/rwcheck,则:
代码语言:javascript
复制
$ cd tina/package/utils/rwcheck
$ mm -b
编译出应用安装包保存路径为:
代码语言:javascript
复制
tina/out/<方案>/packages/base
6.7.2 方法二
当在tina的根目录,可执行:
代码语言:javascript
复制
$ make <应用包的路径>/clean,==>清空应用包临时文件
$ make <应用包的路径>/install,==>编译软件包
或者
$ make <应用包的路径>/{clean,install},==>先清空临时文件再编译
示例:假设软件包的路径为:tina/package/utils/rwcheck,则:
代码语言:javascript
复制
$ cd tina
$ make package/utils/rwcheck/{clean,install}
6.8 其他命令
命令
命令有效目录
作用
make
tina根目录 编译整个sdk
make
menuconfig tina根目录 启动软件包配置界面
make
kernel_menuconfig tina根目录 启动内核配置界面
mkarisc
tina下任意目录 编译cpus源码,根据axp型号选择对应的默认配置
printfconfig
tina下任意目录 打印当前sdk的配置
croot
tina下任意目录 快速切换到tina根目录
cconfigs
tina下任意目录 快速切换到方案的bsp配置目录
cdevice
tina下任意目录 快速切换到方案配置目录
carisc
tina下任意目录 快速切换到cpus代码目录
cgeneric
tina下任意目录 快速切换到方案generic目录
cout
tina下任意目录 快速切换到方案的输出目录
cboot
tina下任意目录 快速切换到bootloader目录
cgrep
tina下任意目录 在c/c++/h文件中查找字符串
minstall
path/to/package/ tina根目录 编译并安装软件包
mclean
path/to/package/ tina根目录 clean软件包
mm [-b]
软件包目录 编译软件包,-b指编译前先clean
pack
tina根目录 打包固件
m
tina下任意目录 make的快捷命令,编译整个sdk
p
tina下任意目录 pack的快捷命令,打包固件
7 tina系统烧写
7.1 概述
本章节主要介绍如何将构建完成的镜像文件(image)烧写并运行在硬件设备上的流程。
sdk中的烧录工具不再更新,后续会删除,请优先选择从全志客户服务平台下载最新烧录工具。
windows工具均集成在apst中,下载安装apst即可,apst的工具均自带文档。
7.2 烧录工具
tina提供的几种镜像烧写工具介绍如表所示,用户可以选择合适的烧写方式进行烧写。
工具
运行系统
描述
phoenixsuit
windows
分分区升级及整个固件升级工具
phoenixcard
windows
卡固件制作工具
phoenixusbpro
windows
量产升级工具,支持usb一拖 8 烧录
livesuit
ubuntu
固件升级工具
对于ubuntu:
64bit主机使用livesuitv306_for_linux64.zip。
32bit主机使用livesuitv306_for_linux32.zip。
具体烧录工具和使用说明,请到全志客户服务平台下载。
7.3 进入烧录模式.
设备需进入烧录模式,以下几种情况会进入烧录模式:
brom无法读取到boot0,例如新换的flash不包含数据,或者上电时短路flash阻断通信。
在串口中按 2 进入烧录。即,在串口工具输出框中,按住键盘的’2’,不停输出字符’2’,上电启动。boot0检测到此字符,会跳到烧录模式。
在uboot控制台,执行efex。
在linux控制台,执行reboot efex。
adb可用的情况下,可使用adb shell reboot efex,或点击烧录工具上的“立即烧录”按钮。
当完整配置[fel_key]下fel_key_max和fel_key_min时,按下键值在范围内按键,之后上电。
当板子有fel按键时,按住fel按键上电。
制作特殊的启动卡,从卡启动再进入烧录模式。
8 tina uboot定制开发
8.1 概述
本章节简单介绍uboot基本配置、功能裁剪、编译打包、常用命令的使用,帮助客户了解tina
平台uboot框架,为boot定制开发提供基础。
目前tina sdk共有三版uboot,分别是uboot-2011、uboot-2014、uboot-2018,分别在不
同硬件平台上使用,客户拿到sdk需要根据开发的硬件平台核对版本信息。
8.2 代码路径
代码语言:javascript
复制
tinasdk/
├── brandy
│ ├── ...
│ ├── u-boot-2011
│ └── u-boot-2014
├── brandy-2.0
│ ├── ...
│ └── u-boot-2018
8.3 uboot功能
tinasdk中,bootloader/uboot在内核运行之前运行,可以初始化硬件设备、建立内存空间映
射图,从而将系统的软硬件环境带到一个合适状态,为最终调用linux内核准备好正确的环境。
在tina系统平台中,除了必须的引导系统启动功能外,uboot还提供烧写、升级等其它功能。
引导内核能从存储介质(nand/mmc/spinor)上加载内核镜像到dram指定位置并运行。
量产&升级包括卡量产,usb量产,私有数据烧录,固件升级。
电源管理包括进入充电模式时的控制逻辑和充电时的显示画面。
开机提示信息开机能显示启动logo图片(bmp格式)。
fastboot功能实现fastboot的标准命令,能使用fastboot刷机。
8.4 uboot配置
以uboot-2018为例,各项功能可以通过defconfig或配置菜单menuconfig进行开启或关闭,
具体配置方法如下:
8.4.1 defconfig方式
8.4.1.1 defconfig配置步骤
vim /tinasdk/lichee/brandy2.0/u-boot-2018/configs/sun8iw18p1_defconfig (若是spinor方案则打开sun8iw18p1_nor_defconfig)
打开sun8iw18p1_defconfig或sun8iw18p1_nor_defconfig后,在相应的宏定义前去掉或添加"#"即可将相应功能开启或关闭。
如上图,只要将config_sunxi_nand前的#去掉即可支持nand相关功能,其他宏定义的开启关闭也类似。
8.4.1.2 defconfig配置宏介绍.
如下图是sun8iw18p1_defconfig/sun8iw18p1_nor_defconfig中的基本宏定义的介绍:
8.4.2 menuconfig方式
通过menuconfig方式配置的方法步骤如下:
代码语言:javascript
复制
cd /tinasdk/lichee/brandy2.0/u-boot-2018/
make arch=arm menuconfig或make arch=arm64 menuconfig
注意:arm针对 32 位平台,arm64针对 64 位平台。
执行上述命令会弹出menuconfig配置菜单,如下图所示,此时即可对各模块功能进行配置,配
置方法menuconfig配置菜单窗口中有说明。
8.5 uboot编译
8.5.1 方法一
在tina目录下即可编译uboot。
代码语言:javascript
复制
source build/envsetup.sh(见详注1)
lunch (见详注2)
muboot(见详注3)
详注:
1 加载环境变量及tina提供的命令。
2 输入编号,选择方案。
3 编译uboot,编译完成后自动更新uboot binary到tinasdk/target/allwinner/$(board)-common/bin/。
8.5.2 方法二
代码语言:javascript
复制
source build/envsetup.sh(见详注1)
lunch (见详注2)
cboot(见详注3)
make xxx_config(见详注4)
make -j
详注:
3 跳转到uboot源码目录。
4 选择方案配置,如果是使用norflash,运行make xxx_nor_config。
5 执行编译uboot的动作。
8.6 uboot的配置
8.6.1 sys_config配置.
sys_config.fex是对不同模块参数进行配置的重要文件,对各模块重要参数的更改及更新提供了
极大的方便。其文档存放路径:
代码语言:javascript
复制
tinasdk/target/allwinner/$(board)/configs/sys_config.fex
tinasdk/device/config/chips/$(chip)/configs/$(board)/sys_config.fex
8.6.1.1 sys_config.fex结构介绍
sys_config.fes主要由主键和子键构成,主键是某项功能或模块的主标识,由[]括起,子键是对
该功能或模块中各个参数的配置项,如下图所示,dram_para是主键,dram_clk、dram_type
和dram_zp是子键。
8.6.1.2 sys_config.fex配置实例
[platform]:平台相关配置项。
例如,debug_mode =1表示开启uboot的调试模式,开启后会在log中打印出对应的调试信
息。next_work=2表示烧录完成后系统的下一步执行动作(0x1表示正常启动、0x2表示重启、
0x3表示关),其他配置可以查看[platform]前的提示说明。
[target]:目标平台相关功能配置项
上图中的可以通过配置boot_clock配置cpu的频率大小。
[uart_para]:串口配置项,uart_para配置项是uboot串口打印调试时用到的重要配置
上图中的uart_debug_port=0表示使用的是uart0,uart_debug_tx/uart_debug_rx配置的gpio口(pa04/pa05)需要根据对应的gpio datasheet进行配置。
8.6.1.3 sys_config.fex解析流程
在uboot2014/2018中sys_config.fex最终会被转化为dtb(device tree binary,linux内核配置方式),dtb最终会被打包烧录至flash中,启动过程中会将该文件加载至内存,之前在sys_config.fex中配置的参数已转化为dtb节点,最终会调用fdt_getprop_32()函数对dtb中的节点进行解析。
8.6.2 环境变量配置.
uboot的环境变量就是一个个的键值对,操作接口为:getenv(),setenv(),saveenv()。环境变量的形式:
代码语言:javascript
复制
boot_normal=sunxi_flash read 40007800 boot;boota 4000780
boot_recovery=sunxi_flash read 40007800 recovery;boota 40007800
boot_fastboot= fastboot
8.6.2.1 环境变量作用.
可以把一些参数信息或者命令序列定义在该环境变量中。在环境变量中定义uboot命令序列,
可以把uboot各个功能模块按顺序组合在一起执行,从而完成某个重要功能。
例如,如果执行了上述提到的 boot_normal 环境变量对应的命令,uboot 则会先调用
sunxi_flash命令从存储介质的boot分区上加载内核到dram的0x40007800位置;然后调
用boota命令完成内核的引导。
uboot启动时调用环境变量方式下如图所示:
8.6.2.2 环境变量配置示例介绍.
tinasdk中,环境变量配置文件保存在tinasdk/target/allwinner/$(board)/configs/env.cfg
文件,用户使用的时候,可能会看到env-4.4.cfg、env-4.9.cfg等文件,env-xxx后缀数字表示在不同内核版本上的配置。打开后其内容示例如下,
bootdelay=0,改环境变量bootdelay(即boot启动时log中的倒计时延迟时间)值的大小,为便于调试,bootdelay的值一般不要等于 0 ,这样在小机上电后按下任意键才能进入uboot shell命令状态。
boot_normal=sunxi_flash read 40007800 boot;boota 4000780,设置启动内核命令,即将boot分区读到内存0x40007800地址处,然后从内存0x40007800地址处启动内核。
setargs_nand=setenv bootargs earlyprintk=${earlyprink}… ,设置内核相关环境变量,该变量在启动至内核的log中会打印处理,即cmdline如下图:
loglevel=8,设置内核log打印等级。
8.6.3 sys_partition.fex分区配置
分区配置文件是一个规划磁盘分区的文件,烧录过程会按照该分区配置文件将各分区数据烧录至flash中。
tinasdk中,分区配置文件路径tinasdk/target/allwinner/$(board)/configs/sys_partition.fex。有些方案可以看到sys_partition.fex、sys_partition_nor.fex两个分区配置文件,若是打包tina非nor固件,则使用的是sys_partition_linux.fex配置文件,若是打包nor固件,则使用的是sys_partition_nor.fex。
8.6.3.1 sys_partition.fex分区配置介绍
一个分区的属性,包含名称、分区大小、下载文件与用户属性。以下是文件中所描述的一个分区的属性:
name,分区名称由用户自定义。当用户在定义一个分区的时候,可以把这里改成自己希望的字符串,但是长度不能超过 16 个字节。
size,定义该分区的大小,以扇区的单位(1扇区=512bytes,如上图给env 分区分配了32768 个扇区,即32768*512/1024/1024 = 16m),注意,为了字节对齐,这里分配的扇区大小应当能整除 128 。
downloadfile,下载文件的路径和名称。可以使用相对路径,相对是指相对于image.cfg文件所在分区。也可以使用绝对路径。
user_type,提供给操作系统使用的属性。目前,每个操作系统在读取分区的时候,会根据用户属性来判断当前分区是不是属于自己的然后才进行操作。这样设计的目的是为了避免在多系统同时存在的时候,a操作系统把b操作系统的系统分区进行了不应该的读写操作,导致b操作系统无法正常工作。
更具体的说明,可参考《tinalinux存储管理开发指南》。
9 tina kernel定制开发
9.1 概述
本章节简单介绍kernel基本配置、功能裁剪、常用命令的使用,帮助客户了解tina平台linux
内核,为内核定制开发提供基础。
目前tina sdk共有 4 版linux kernel,分别是linux-3.4、linux-3.10、linux-4.4、linux-
4.9,分别在不同硬件平台上使用,客户拿到sdk需要根据开发的硬件平台核对内核信息。
9.2 代码路径
代码语言:javascript
复制
tinasdk/
├── ...
├── linux-3.10
├── linux-3.4
├── linux-4.4
└── linux-4.9
9.3 模块开发文档.
详阅bsp开发文档,文档目录包括常用内核模块使用与开发说明。
9.4 内核配置
客户在定制化产品时,通常需要更改linux内核配置,在tinasdk中,打开内核配置的方式如
下,
代码语言:javascript
复制
croot
make kernel_menuconfig
执行完后,shell控制台会跳出配置菜单。如下图所示,
10 tina系统定制开发
10.1 tina procd-init与busybox-init切换.
tina默认为procd-init:
代码语言:javascript
复制
make menuconfig进行配置:
1.system init 选择procd-init
2.以下一步步选中
base system --->
<*>block-mount
<*>busybox................................ core utilities for embedded linux --->
init utilities --->
[ ] init 此处不选
coreutils --->
[*] head
miscellaneous utilities --->
[*] strings
<*> uci
<*> logd
3.env.cfg修改
init=/sbin/init
busybox-init自启动方式配置如下:
代码语言:javascript
复制
make menuconfig进行配置:
1.system init 选择busy-init
2.以下一步步选中
base system --->
<*>busybox................................ core utilities for embedded linux --->
init utilities --->
[* ] init 此处选上
3.env.cfg修改
init=/init
rdinit=/rdinit
10.2应用移植
在tina linux sdk中一个软件包目录下通常包含如下两个目录和一个文件:
代码语言:javascript
复制
package/<分类>/<软件包名>/makefile
package/<分类>/<软件包名>/patches/ [可选]
package/<分类>/<软件包名>/files/ [可选]
其中,
patches 保存补丁文件,在编译前会自动给源码打上所有补丁
files 保存软件包的源码,在编译时会对应源码覆盖源码中的源文件
makefile 编译规则文件,
10.2.1 makefile范例
该makefile的功能是软件源码的准备,编译和安装的过程,提供给tina linux识别和管理软件包的接口,软件的编译逻辑是由软件自身的makefile决定,理论上和该makefile(该makefile只执行make命令和相关参数)无实质关系。
详注:
代码语言:javascript
复制
1.如果是开源软件,软件包版本建议与下载软件包的版本一致。
2.以pkg开头的变量主要告诉编译系统去哪里下载软件包。
3.md5sum用于校验下载下来的软件包是否正确,如果正确,在编译该软件的时候,就会在pkg_build_dir下找到该软件包的源码。
4.package/<name>: <name>用来指定该package的名字,该名字会在配置系统中显示。
5.使用依赖包的名字<name>来指定依赖关系,如果是扩展包,前面添加一个”+”号,如果是内核版本依赖使用@linux_2_<minor version>。
6.如果该值为 1 ,该包将不会出现在配置菜单中,但会作为固定编译,可选。
7.在开源软件中一般用来生成makefile,其中参数可以通过configure_vars来传递。
8.在开源软件中一般相当于执行make,其中有两个参数可以使用:make_flags和make_vars。
9.内置的几个关键字如下:
install_dir相当于install -d m0755
install_bin相当于install -m0755
install_data相当于install -m0644
install_conf相当于install -m0600
10.该makefile的所有define部分都是为该宏的参数做的定义.上层makefile通过调用此宏进行编译。
10.2.2 自启动设置
在tina linux中支持两种格式的初始化脚本,一种是busybox式或者sysv式的初始化脚本,
一种是procd式的初始化脚本。一般我们把由初始化脚本启动的应用叫做服务。
初始化脚本以shell脚本的编程语言组织,shell脚本作为基础知识在此不展开说明。一般情况
下,初始化脚本源码保存在软件的files目录,且后缀为“.init”,例如:
代码语言:javascript
复制
tina/package/system/fstools/files/fstab.init
在makefile的install中把初始化脚本安装到小机端的/etc/init.d中,例如:
代码语言:javascript
复制
define package/block-mount/install
$(install_dir) $(1)/etc/init.d/
$(install_bin) ./files/fstab.init $(1)/etc/init.d/fstab
endef
10.2.2.1调用自启动脚本.
手动调用方式在启动的时候会有太多的log,且log信息已被logd守护进程收集,不利于我们
调试初始化脚本,此时可通过小机端的命令行手动调用的形式来调试,例如:
代码语言:javascript
复制
root@tinalinux: /# /etc/init.d/fstab start
10.2.2.2 sysv格式脚本
sysv式的初始化脚本保存在小机端的/etc/init.d/目录下,实现开机自启动。下例以最小内容的初
始化脚本作示例讲解,核心是实现start/stop函数:
代码语言:javascript
复制
#!/bin/sh /etc/rc.common
# example script
# copyright (c) 2007 openwrt.org
start=10
stop=15
depend=xxxx
start() {
#commands to launch application
}
stop() {
#commands to kill application
}
注意:
start=10, 指明开机启动优先级(序列) [数值越小, 越先启动],取值范围0-99。
stop=15, 指明关机停止优先级(序列) [数值越小, 越先关闭],取值范围0-99。
depend=xxxx, 指明初始化脚本会并行执行,通过此项配置确保执行的依赖。
名称
属性
功能
start
必须实现
启动一个服务
stop
必须实现
停止一个服务
reload
可选实现
重启一个服务
enable
可选实现
重新加载服务
disable
可选实现
禁用服务
在shell里面可以使用如下的命令来操作相关的服务。
代码语言:javascript
复制
$ root@tinalinux:/# /etc/init.d/exmple restart|start|stop|reload|enable|disable
10.2.2.3 procd格式脚本
以下例的初始化脚本作示例讲解,主要是实现函数start_service:
代码语言:javascript
复制
#!/bin/sh /etc/rc.common
use_procd=1
prog=xxxx
start=10
stop=15
depend=xxxx
start_service() {
procd_open_instance
procd_set_param command $prog -f
......
procd_close_instance
}
详细的介绍可以参考:https://wiki.openwrt.org/inbox/procd-init-scripts。
10.3应用调试
新添加的软件默认配置为不使能,此时需要手动配置使能软件包。通过在tina的根目录执行
make menuconfig进入软件包的配置界面:
软件包的所在路径与软件包的makefile中的定义有关,以fstools为例,在makefile中定义
为:
代码语言:javascript
复制
define package/fstools
section:=base
category:=base system
depends:=+ubox +use_glibc:librt +nand_support:ubi-utils
title:=openwrt filesystem tools
menu:=1
endef
此时,只需要在menuconfig界面中进入basy system即可找到fstools的软件包。
前缀符号含义:
代码语言:javascript
复制
[*] 或<*> : 编译进入sdk
[ ] 或< > : 不包含
支持操作:
代码语言:javascript
复制
y或y:选择包含
n或n:取消选择
10.4应用编译
详见重编应用章节。
10.5应用安装
获取安装包
安装包一般位于目录:
代码语言:javascript
复制
tina/out/<方案>/packages/base
安装包命名格式为:
代码语言:javascript
复制
<应用名>_<应用版本>-<应用释放版本>_sunxi.ipk
安装应用包
通过adb推送安装包到小机:
代码语言:javascript
复制
$ adb push <安装包路径> <推送到小机路径>
安装应用包:
代码语言:javascript
复制
$ opkg install <安装包路径>
10.6分区与挂载
升级分区
分区
功能
boot分区
存内核镜像
rootfs分区
基础系统镜像分区,包含/lib,/bin,/etc等
recovery分区
存放恢复系统镜像,仅大容量方案有,详见ota文档
extend分区
存放恢复系统镜像及rootfs的usr部分,仅小容量方案有,详见ota文档
不升级分区
分区
功能
private分区
存储sn号分区
misc分区
系统状态、刷机状态分区
udisk分区
用户数据分区,一般挂载在/mnt/udisk
overlayfs分区
存储overlayfs覆盖数据
默认挂载点
分区
挂载点
备注
/dev/by-name/boot
/boot
/dev/by-name/boot-res
/boot-res
/dev/by-name/udisk
/mnt/udisk
用户数据分区
/dev/mmcblk0或/dev/mmcblk0p1
/mnt/sdcard
tf卡挂载点
/dev/by-name/rootfs_data
/overlay
存储overlayfs覆盖数据
我是如何在四年时间里,从厨师转行为 serverless 应用开发者:当时,我开始在在家中制作些小点心赚取外快。那时候我从学校搬了出来,在搬到新住处后,我在工作的餐厅和城区的家之间往返很不便。于是我决定在餐厅做兼职,另外找一份咖啡店的工作。
因此,我给自己设下了一个任务,学习有关服务器的知识以及如何针对服务器编写代码。我开始采用 php 构建简单的后端应用,从移动测试应用、web 窗体和 curl 命令获取数据。
我们不仅成功迁移了应用,还创建一个框架,框架中规定了相关的步骤,便于我们以后遵循这些流程来进行迁移。就这样,我们建立起了一支创新团队。我们希望通过提出创新的想法来让办公室更智能。
向无服务器开发过渡我对 serverless framework 一见倾心。我只需把精力集中在代码上,就可让应用快速投入运行 —— 在人们使用的同时,我们可以不断开发和实现自己的构思。
我过去 5 个月一直在学习 serverless framework,现在正计划将 serverless framework 投入到工作中,这项服务可帮助客户构建和迁移其应用。
真果科技贾求真:数字新经济,金融新业态|腾讯saas加速器·ceo说:政令中第十四条规定“中小企业以应收账款担保融资的,机关、事业单位和大型企业应当自中小企业提出确权请求之日起30日内确认债权债务关系,支持中小企业融资”;政令中第二十一条规定“省级以上人民政府建立督查制度
综上,我们认为区域政府搭建政务金融科技服务平台,行政化推动辖内核心企业确权,链接金融机构,为链属中小微企业提供数字化融资服务,构建数字金融g2s2b业态创新发展模式是政府参与金融的必由之路。
面向核心企业群体中的机关、事业单位、国有企业,建议积极响应政府号召,国企担当,去政务金融平台实施融资确权工作。 ?
面向政府机构、产业市场、金融机构,提供数字金融科技产品及融资运营服务。
腾讯携手真果科技共同助力长沙市政府、湘江国投构建完善的区块链金融产业生态,打造全国有影响力的“一区三链”监管示范基地,开启湖南数字新经济,产业金融新业态!
mysql cpu 使用率高,怎么查,怎么破:实际上我们是不是有更好的快速定位的方法
下图我们可以看到系统cpu一直在 90%, 到底什么原因造成mysql的cpu 利用率一直高怎么分析。follow me.
?
数据堂:大数据产业调研及分析报告(145页):大数据引发了全球范围内深刻的技术与商业变革,已经成为全球发展的趋势以及国家、企业间的竞争焦点,直接关系到国家安全、社会稳定、经济发展和民生幸福等诸多方面。
图.我国大数据产业链布局(二)我国大数据源尚待激活大数据的开放和流通是政府、企业和学术界面临的首要挑战,只有多源头、跨领域的关联分析才有可能实现数据价值的深度挖掘,能否从多源、异构的海量数据中快速获得有价值信息
,将逐渐成为决定国家和企业发展水平的核心指标。
另一方面,在政府公共服务、农业和医疗健康领域的应用案例相对缺乏,我国政府和公共服务事业单位沉淀了全国近三分之一的数据(麦肯锡),但未能与广大传统行业的需求形成对接。
我国幅员辽阔、人口众多,交通、医疗、金融及农业等事关国计民生的领域汇集了海量的人口、个体行为和环境数据,通过人工智能技术的应用可以极大带动政府决策、公共服务和传统行业的发展,同时培育数据银行和众包平台等产业模式的创新
转载请注明出处,本站网址:
http://www.831209.com.cn/news_2391.html