翠屏区政府公文系统:伊春区政府办公oa系统中Tina_Linux_系统软件 开发指南

时间:2025-02-06 10:59:17 信创OA资讯首页 大港政府机关oa

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
相关推荐
热门TAG

常德做网站 广东哪家网站制作公司好 福田区做网站 伽师县网站设计 峨边彝族自治县网站建设 云南SEO网站优化 便宜的网站建设公司 山海关企业网站开发 西安网站建设公司 市辖区SEO网站优化 富宁做网站 渝北区公司网站建设 seo服务网站 新芜区自助建站 鞍山网站开发 网站制作策划 南芬政府公文系统 网站怎么优化seo 灵武市网页设计 磴口做网站 海林市政务OA 万盛区SEO网站优化 东莞网站制作的公司 建一个网站的步骤 网站优化排名公司 涉 县自助建站 颍上县网站设计 武进区网页设计 苏尼特右旗公司网站建设 吴桥SEO网站优化 好建站 济阳县网站设计 新田县SEO网站优化 平山网页设计 市辖区自助建站 沙依巴克区网站设计 天门市做网站 富拉尔基区政务OA 市辖区政府办公oa系统 汉中SEO网站优化 北京旅游网站建设 内乡县做网站 古冶网站建设 蒲城县SEO网站优化 seo公司 北京 本溪网站制作 方城县政务oa系统 市辖区企业网站开发 普兰店网站建设 新兴县网站建设 沈阳企业自助建站系统 北安市政府公文系统 遵义网页设计 灯塔政府oa系统 吉木乃县做网站 临汾网站建设 应城市网站设计 洞口县SEO网站优化 渭源县做网站 浮梁县网页设计 江永县网站设计 遂川县自助建站 罗甸县政府办公oa系统 霍山县人民政府电话 市中区网站设计 武定网页设计 岳阳县SEO网站优化 吉林公司网站建设 沂源县网页设计 容 县自助建站 荔波县网站建设 好的建站网站 梧州网站建设 曲松县自助建站 宝鸡政务oa系统 HR大数据分析与经营模拟决策平台题目