S32V234 Linux yocto开发环境搭建

 

一、主机环境

主机: Ubuntu 16.04.5 64bit

S32V bsp infomation:

Bsp version:auto_yocto_bsp_19.0 ;

Linux Kernel version: 4.13.34 ;

Yocto Project version: 2.1 ;

开发板SBC-S32V234官网资料:https://www.nxp.com/design/development-boards/automotive-development-platforms/s32v-mpu-platforms/s32v-vision-and-sensor-fusion-evaluation-board:SBC-S32V234

在NXP的官网上提供了S32V SOC的资料:

  • S32 Design Studio for Vision Processors 2018.R1
  • Vision SDK Software RTM1.2.0
  • Automotive SW – Linux BSP 19.0 (Kernel 4.14.34)
  • Vision Driver

S32 Design Studio for Vision Processors包含了Vision SDK Software,并为Vision SDK Software提供了一套基于Eclipse的图形开发环境,这两者都包含完整的编译器,分别为aarch64 linux、aarch64 baremetal和cortex m4内核(S32V内嵌的一个MCU)提供支持,还有一个定制化的clang编译器为APEX处理器提供支持。

Vision SDK Software 可以单独安装,二者包含的功能基本相同,只不过缺少了一个集成开发环境,需要自己使用make来组织工程。

Vision Driver是为APEX、ISP、编解码器等硬件提供的驱动,与常规驱动不同的是,这些驱动基本上只是作为一个bridge,将硬件访问接口暴露出来,主要的硬件控制操作其实是在用户空间完成的。

 

二、Yocto简介

  • Yocto:Yocto ,是一个开源社区它通过提供模版、工具和方法帮助开发者创建基于linux内核的定制系统,支持ARM, PPC, MIPS, x86 (32 & 64 bit)硬件体系架构。
  • Poky:Poky有两个含义。第一个含义是用来构建Linux的构建系统,值得注意的该Poky仅仅是一个概念,而非一个实体:它包含了 BitBake工具、编译工具链、BSP、诸多程序包或层,可以认为Poky即是Yocto的本质;此外Poky还有另外一层意思,使用Poky系统得到的默认参考 Linux 发行版也叫Poky(当然,我们可以对此发行版随意命名),Poky的两个含义千万不能混淆。
  • Metadata:元数据集,所谓元数据集就是发行版内各基本元素的描述与来源 
    • Recipes:.bb/.bbappend文件,配方文件,描述了从哪获取软件源码,如何配置,如何编译。bbappend和bb的区别主要在于bbappend是基于bb的,功能是对相应的bb文件作补充和覆盖,有点类似于“重写”的概念。
    • Class:.bbclass文件
    • Configuration:.conf文件,即配置文件,我们可以用它来改变构建方式。
  • Layers:即各种meta-xxx目录,将Metadata按层进行分类,有助于项目的维护
  • Bitbake:一个任务执行引擎,用来解析并执行Metadata
  • Output:即各种输出image。

注:以上介绍来源网络。

 

三、S32V Yocto环境搭建

1.Yocto基本环境搭建

(1)首先安装yocto环境所需要的相关工具软件包, 命令如下:

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev

(2)安装soc层环境需要的工具软件包,命令如下:

sudo apt-get install libsdl1.2-dev xterm sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff curl lzop asciidoc

(3)安装uboot工具软件包,命令如下:

  • ubuntu12.04主机安装命令:sudo apt-get install uboot-mkimage
  • ubuntu14.04主机安装命令:sudo apt-get install u-boot-tools

(4)安装获取repo工具,命令如下:

  • mkdir ~/bin
  • curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
  • chmod a+x ~/bin/repo
  • export PATH=~/bin:$PATH

注意:如果没有VPN,repo可能会下载失败, 可以使用国内的repo下载网址替代:curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo

之后还要导入REPO_URL环境变量才会去清华源下载相关资源,命令如下:

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

(5)Git配置,输入如下命令:

  • git config --global user.name "Your Name"
  • git config --global user.email "Your Email"
  • git config --list

(6)下载yocto环境,同步代码到创建的目录,命令如下:

  • mkdir fsl-auto-yocto-bsp
  • cd fsl-auto-yocto-bsp
  • repo init -u https://source.codeaurora.org/external/autobsps32/auto_yocto_bsp -b release/bsp19.0 -m adas.xml
  • repo sync

 

(7)首次编译安装配置,准备主机工作环境,命令如下:

  • sudo ./sources/meta-alb/scripts/host-prepare.sh

(8)创建编译目录和测试安装,命令如下:

  • source nxp-setup-alb.sh -m s32v234sbc

注意:-m 后面的选项根据自己的SOC板子来选,该bsp支持的板子和soc如下:

• Machines: s32g275sim, s32v234bbmini, s32v234evb28899, s32v234evb, s32v234pcie, s32v234tmdp,

s32v344sim, s32r45xsim, s32v234evbubuntu, s32v234sbc

 

You can now run 'bitbake '

 

Targets specific to NXP:

fsl-image-mfgtool-initramfs

fsl-image-auto

fsl-image-base

fsl-image-base-fit

fsl-image-bluebox

fsl-image-blueboxbootflash

fsl-image-blueboxdt

fsl-image-blueboxls2sdfactory

fsl-image-fit

fsl-image-flash

fsl-image-itbflash

fsl-image-nfs-initramfs

fsl-image-sim

fsl-image-ubuntu-base

fsl-image-ubuntu

fsl-image-ubuntu-ros

fsl-image-vsdk

To return to this build environment later please run:

. /home/nice/work/fsl-auto-yocto-bsp/build_s32v234sbc/SOURCE_THIS

 

(9)编译整包镜像, 如有需要可以先配置下Kernel添加GPU驱动:

  • bitbake virtual/kernel -c menuconfig

and from Device Drivers -> Generic Driver Options -> [*] DMA Contiguous Memory Allocator -> set (32) Size

in Mega Bytes instead of 16 (default)

S32V234 Linux yocto开发环境搭建_第1张图片

 

(10)开始编译整包镜像,命令如下:

  • bitbake fsl-image-auto

注意:如果想要离线编译,可以使用fetchall命令先下载编译项所需要的pack再去编译,命令如下: bitbake fsl-image-auto -c do_fetch

支持编译的目标镜像如下:

Images: fsl-image-base, fsl-image-auto, fsl-image-ubuntu, fsl-image-ubuntu-base

2.集成VSDK到Yocto

(1) 首先,要获取到Yocto下的 meta-adas 配方库, repo init使用-m指定adas.xml:

  • repo init -u https://source.codeaurora.org/external/autobsps32/auto_yocto_bsp -b release/bsp19.0 -m adas.xml
  • repo sync

(2)去下载和安装VSDK,准备集成到yocto中,下载地址(目前最新版本为1.3.0, 兼容bsp19.0): https://nxp.flexnetoperations.com/control/frse/product?plneID=713087

  • sudo ./VisionSDK_S32V2_RTM_1_3_0_HF1.bin

注意: 安装APU Compiler的时候会提示输入license, 下载的时候会自动发送到你的NXP账户邮箱, 或者点击下载列表中的License Lists

S32V234 Linux yocto开发环境搭建_第2张图片

(3)创建编译文件夹(之前已经创建,也可不执行):

  • source nxp-setup-alb.sh -m s32v234sbc

 

(4)编辑/conf/local.conf文件,去指定VSDK的安装路径,添加一行(根据VSDK路径不同去修改):

  • FSL_LOCAL_MIRROR = "file:///home/nice/opt/VisionSDK_S32V2_RTM_1_3_0_HF1"

(5)为了能够在镜像中使用VSDK ffmpeg的依赖, 需要在/conf/local.conf中添加一行许可证标准, 如下:

  • LICENSE_FLAGS_WHITELIST_append = " commercial "

(6)编译镜像,命令如下:

  • bitbake fsl-image-vsdk

(7)上面编译命令, 如果发现找不到fsl-image-vsdk这个package, 可以手动把meat-adas层路径增加到/conf/bblayers.conf文件中的BBLAYERS关键字最后,如下:

BBLAYERS ?= " \

...

/meta-adas \

"

我们的meta-adas层路径实例:

BBLAYERS ?= " \

...

/home/nice/work/fsl-auto-yocto-bsp/sources/meta-adas \

"

3.添加glmark2(GPU性能测试工具)到Yocto

(1).在 sources/meta-alb/conf/distro/fsl-auto.conf 文件中添加一行,如下:

  • DISTRO_FEATURES_append = " gpu"

(2).在sources/meta-alb/recipes-fsl/images/fsl-image-auto.bb文件中添加一行,如下:

  • IMAGE_INSTALL_append = " glmark2 gpu-viv-bin-s32v2xx kernel-module-galcore"

(3).将glmark2的官方补丁添加到Yocto 配方中去,编译的时候自动去打补丁,步骤如下:

在yocto的sources/meta-alb文件夹中创建补丁存放文件夹:

  • mkdir -p sources/meta-alb/recipes-patched/glmark2

创建补丁的bbappend文件:

  • touch sources/meta-alb/recipes-patched/glmark2/glmark2_git.bbappend

将补丁的下载路径等属性加入bbappend文件:

  • echo "SRC_URI += \" https://portland.source.codeaurora.org/patches/external/autobsps32/misc/glmark2/glmark2-2017.07/compatibility_with_fbdev.patch\"" >> sources/meta-alb/recipes-patched/glmark2/glmark2_git.bbappend
  • echo "PACKAGECONFIG_s32v2xx = \"x11-gles2\"" >> sources/meta-alb/recipes-patched/glmark2/glmark2_git.bbappend
  • echo "CXXFLAGS += \"-fpermissive\"" >> sources/meta-alb/recipes-patched/glmark2/glmark2_git.bbappend

 

注意: 如果bitbake编译的时候fetch下载compatibility_with_fbdev.patch文件出错,就手动下载放到Dowloads目录下去, 再次编译又会提示没有指定checksum, 在glmark2_git.bbappend文件最后加上即可, 如下:

  • SRC_URI[md5sum] = "9eb57fc55489b6c6aafb63d0001493e1"

4.添加GPU驱动模块和GPU示例程序到Yocto (可选,非必须操作,与后面集成VSDK二选一)

(1).添加GPU内核模块,在meta-alb/recipes-fsl/images/fsl-image-auto.bb文件中添加下面这一行, Yocto会自动去下载Galcore内核模块源码(手动下载地址: https://source.codeaurora.org/external/autobsps32/galcore/?h=alb/master):

  • IMAGE_INSTALL += "gpu-viv-bin-s32v2xx gpu-demos-dev"

(2)需要接受NXP的EULA, 检查/conf/local.conf文件中的关键字是否为1,如下:

  • build_s32v234evb/conf/local.conf

(3)去下载 VivanteVTK, 解压该文件,放到一个目录,这里示例放在~/opt目录下,下载地址如下:

https://nxp.flexnetoperations.com/control/frse/download?agree=Accept&element=3557133

(4)在/conf/local.conf文件中添加FSL_LOCAL_MIRROR变量来指定上一个步骤提前下载好的GPU驱动相关文件(VivanteVTK),并使能GPU特性:

  • FSL_LOCAL_MIRROR = "file:///home/nice/opt/GPU_userspace_binaries_and_VTK_tools_6.2.4"
  • DISTRO_FEATURES_DEFAULT_append = " gpu"

[可选] Yocto环境下,在bb文件中添加了GPU模块时,Yocto打包时会自动下载并包含GPU模块到生成的镜像当中. 并自动加载运行.如果是手动下载和编译,需要把Galcore内核模块源码生成的galcore.ko文件手动安装下.

(5)bitbake fsl-image-auto编译生成kernel和rootfs之后,烧录验证, 可以运行glmarks2-es2来测试显示.

注意: 开发板SBC-S32V234的HDMI输出需要先通过I2C设置前端的HDMI芯片输出, 在U-Boot设置环境变量,如下:

  • setenv dvi_on 'i2c dev 2; i2c mw 3f 8 35'
  • setenv bootcmd 'run dvi_on; run loadimage; run mmcboot'
  • boot

四、S32V BSP开发附加说明

1.如何找到 U-Boot和Linux其他源码路径?

  • 使用bitbake命令来查找,命令示例: bitbake -e | grep "^S="

如果不知道的名字,可以package搜索命令: bitbake -s | grep

示例:

  • U-boot source:

bitbake -e u-boot | grep "^S="

S="/tmp/work/s32v234evb-fsl-linux/u-boot-s32/2018.07-r0/git"

  • Linux source:

bitbake -e virtual/kernel | grep "^S="

S="/tmp/work/s32v234evb-fsl-linux/linux-s32/4.19-r0/git"

 

2.使用Yocto定制、构建和部署内核

2.1 在Yocto中添加Kernel的补丁

这里以添加一个GPIO驱动为例, 步骤如下:

(1). Go to the gpio driver folder:

  • cd tmp/work/-fsl-linux/linux-s32/4.19-r0/git/drives/gpio

And edit the source file gpio-siul2.c

(2). Add source that you changed before to git

  • cd /tmp/work/-fsl-linux/linux-s32/4.19-r0/git
  • git add drivers/gpio/gpio-siul2.c
  • git commit -s -m </li> </ul> <p>(3). Create the patch</p> <ul> <li>git format-patch -1</li> </ul> <p>Check in <builddirectory>/tmp/work/<machine>-fsl-linux/linux-s32/4.19-r0/git folder, there is a patch file cre-</p> <p>ated, e.g. 0001-test-gpio-repackage.patch</p> <p>(4). Copy the patch file to meta-alb/recipes-kernel/linux/linux-s32 folder</p> <p>(5). Edit linux-s32_4.19.bb file in /meta-alb/recipes-kernel/linux to include the patch file, e.g.</p> <ul> <li>SRC_URI += "file://0001-test-gpio-repackage.patch"</li> </ul> <p>(6). Return to the build directory and run command as bellow to clean the previous sstate:</p> <ul> <li>source ./SOURCE_THIS</li> <li>bitbake virtual/kernel -c cleansstate</li> </ul> <p>(7). Re-build and deploy linux</p> <ul> <li>bitbake virtual/kernel</li> </ul> <p> </p> <p>2.2 在Yocto环境中配置Kernel</p> <p>(1) 在构建文件夹目录下,运行命令:</p> <ul> <li>bitbake virtual/kernel -c menuconfig</li> </ul> <p>(2)配置完成后,重新编译Kernel,命令:</p> <ul> <li>bitbake -c compile -f virtual/kernel</li> </ul> <p>(3)部署Kernel镜像:</p> <ul> <li>bitbake virtual/kernel</li> </ul> <p>2.3 配置编译和部署u-boot</p> <p>重新编译:bitbake -c compile -f u-boot</p> <p>部署镜像:bitbake  u-boot</p> <p>2.4 在Yocto中添加自定义补丁</p> <p>(1)为适当的配方创建一个.bbappend文件:</p> <ul> <li>mkdir -p sources/meta-alb/recipes-patched/<package></li> <li>touch sources/meta-alb/recipes-patched/<package>/<package_recipe_name>.bbappend</li> </ul> <p>(2)确定所需要的 .patch文件的获取地址, 添加到.bbappend文件中,示例如下:</p> <ul> <li>SRC_URI += "https://portland.source.codeaurora.org/patches/external/autobsps32/<desired-patch-file>.patch"</li> </ul> <p>(3)重新编译和不熟镜像即可.</p> <p>(4)添加glmark2的patch示例:</p> <ul> <li>mkdir -p sources/meta-alb/recipes-patched/glmark2</li> <li>touch sources/meta-alb/recipes-patched/glmark2/glmark2_git.bbappend</li> <li>echo "SRC_URI += \" https://portland.source.codeaurora.org/patches/external/autobsps32/misc/glmark2/glmark2-2017.07/compatibility_with_fbdev.patch\"" >> sources/meta-alb/recipes-patched/glmark2/glmark2_git.bbappend</li> <li>echo "PACKAGECONFIG_s32v2xx = \"x11-gles2\"" >> sources/meta-alb/recipes-patched/glmark2/glmark2_git.bbappend</li> <li>echo "CXXFLAGS += \"-fpermissive\"" >> sources/meta-alb/recipes-patched/glmark2/glmark2_git.bbappend</li> </ul> <p> </p> <h1>五、问题总结</h1> <p>(1)编译内核出错1:</p> <p>/bin/sh: bison: command not found</p> <p>scripts/Makefile.lib:196: recipe for target 'scripts/kconfig/zconf.tab.c' failed</p> <p>make[3]: *** [scripts/kconfig/zconf.tab.c] Error 127</p> <p>Makefile:539: recipe for target 'syncconfig' failed</p> <p>make[2]: *** [syncconfig] Error 2</p> <p>Makefile:635: recipe for target 'include/config/auto.conf' failed</p> <p>make[1]: *** [include/config/auto.conf] Error 2</p> <p>Makefile:286: recipe for target '__build_one_by_one' failed</p> <p>make: *** [__build_one_by_one] Error 2</p> <p>解决方法:</p> <p>sudo apt-get install bison </p> <p>sudo apt-get install flex</p> <p> </p> <p>(2)编译内核出错2:</p> <p>scripts/kconfig/conf –syncconfig Kconfig</p> <p> </p> <p>* Configuration file “.config” not found!</p> <p> </p> <p>* Please run some configurator (e.g. “make oldconfig” or</p> <p>* “make menuconfig” or “make xconfig”).</p> <p>scripts/kconfig/Makefile:40: recipe for target ‘syncconfig’ failed</p> <p>解决方法:</p> <p>make menuconfig</p> <p>(3)U-boot在别的板子运行出错, 卡死; 打开DEBUG输出,在include/log.h中定义DEBUG宏:</p> <p>U-Boot 2018.07+g21d6118 (Oct 10 2019 - 10:51:18 +0000)</p> <p>CPU: NXP S32V234 V2.0 at 1000 MHz</p> <p>Reset cause: unknown reset</p> <p>Board: mpxs32v234-R2</p> <p>I2C: ready</p> <p>DRAM: 2 GiB</p> <p>RTC: PCF85263</p> <p>All (4) cores are up.</p> <p>MMC: FSL_SDHC: 0</p> <p>Loading Environment from MMC... *** Warning - bad CRC, using default environment</p> <p>Failed (-5)</p> <p>原因: 新板子没有pcie外设, 卡在common/board_r.c文件中的initr_pci()函数.</p> <p>解决办法; 注释掉pci初始化函数,或者取消include/configs/s32.h和include/configs/mpxs32v234.h头文件中的CONFIG_PCI宏定义</p> <p> </p> <p> </p> <div id="gtx-trans"> <div class="gtx-trans-icon">   </div> </div> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1276632802422439936"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(Linux嵌入式开发)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1759832013889695744.htm" title="Linux嵌入式开发 C++学习:day1" target="_blank">Linux嵌入式开发 C++学习:day1</a> <span class="text-muted">墨鱼馒头</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/1.htm">编程语言</a> <div>C++:在C的基础上增加面向对象的思想【C++简介】1983年,贝尔实验室(BellLabs)的BjarneStroustrup发明了C++。C++在C语言的基础上进行了扩充和完善,是一种面向对象程序设计(OOP)语言。Stroustrup说:“这个名字象征着源自于C语言变化的自然演进”。还处于发展完善阶段时被称为“newC”,之后被称为“CwithClass”。C++被视为C语言的上层结构,19</div> </li> <li><a href="/article/1754755494829899776.htm" title="Linux嵌入式开发+驱动开发-中断" target="_blank">Linux嵌入式开发+驱动开发-中断</a> <span class="text-muted">VernonJsn</span> <a class="tag" taget="_blank" href="/search/%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91/1.htm">驱动开发</a> <div>swi汇编指令可以产生软中断,以下是硬件中断的产生到执行完毕的全过程:在自己设计的芯片“CPU响应中断”程序的第四个步骤可以转向“中断向量控制器”,中断向量控制器中存储中断元服务地址即处理中断处理程序的地址,而不用使用0X18地址的IRQ入口。驱动程序执行中断的过程:</div> </li> <li><a href="/article/1747878692081647616.htm" title="linux嵌入式开发常用命令" target="_blank">linux嵌入式开发常用命令</a> <span class="text-muted">持续成长,保持快乐</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E5%B0%8F%E6%8A%80%E5%B7%A7/1.htm">开发小技巧</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>常用命令nm命令功能描述nm是name的缩写,它显示指定文件中的符号信息,文件可以是对象文件、可执行文件或对象文件库。如果文件中没有包含符号信息,nm报告该情况,单不把他解释为出错。nm缺省情况下报告十进制符号表示法下的数字值nm--help查看参数含义可以查看新增的函数有没有编译进去:nmcmdTest|greptest000000000040052dTtest#打印结果使用nm[可执行程序]e</div> </li> <li><a href="/article/1737761905642102784.htm" title="linux嵌入式开发-Zynq开发板配置usb_gadget模拟HID鼠标" target="_blank">linux嵌入式开发-Zynq开发板配置usb_gadget模拟HID鼠标</a> <span class="text-muted">flyingrtx</span> <a class="tag" taget="_blank" href="/search/linux%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/1.htm">linux嵌入式开发</a><a class="tag" taget="_blank" href="/search/zynq/1.htm">zynq</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%A4%96%E8%AE%BE/1.htm">计算机外设</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>文章目录前言本实验基于alinxZynq7010开发板。目的是通过usb_slave连接到PC上,让开发板作为一个鼠标从设备接入电脑,并可以通过linux上命令操作移动、点击鼠标等。一、内核配置1.petalinux2.修改设备树二、鼠标配置1.创建配置2.配置字符串3.配置功能项functionsprotocolreport_desc4.配置config5.启用Gadget6.查看结果7.一键脚</div> </li> <li><a href="/article/1730879470937649152.htm" title="linux下搭建NFS实现文件共享" target="_blank">linux下搭建NFS实现文件共享</a> <span class="text-muted">北星之茫</span> <a class="tag" taget="_blank" href="/search/linux%E5%BA%94%E7%94%A8/1.htm">linux应用</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>目录前言一、安装NFS服务二、配置NFS服务三、重启NFS服务四、客户端访问NFS共享文件夹五、测试验证总结前言NFS(NetworkFileSystem)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源,本地NFS客户端可以读写位于远端NFS服务器上的文件。在linux嵌入式开发中应用NFS来实现文件共享,可以大大提高开发效率。主机环境:Ubuntu18.04.4LTS目标机</div> </li> <li><a href="/article/1724586539859652608.htm" title="【Linux】Ubuntu16.04配置repo" target="_blank">【Linux】Ubuntu16.04配置repo</a> <span class="text-muted">zsyyugong</span> <a class="tag" taget="_blank" href="/search/%E3%80%90Linux%E7%B3%BB%E7%BB%9F%E9%85%8D%E7%BD%AE%E3%80%91/1.htm">【Linux系统配置】</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>Ubuntu16.04配置repo失败在学习韦东山Linux嵌入式开发过程中,使用repo获取内核及工具链:gitclonehttps://e.coding.net/codebug8/repo.gitmkdir-p100ask_imx6ull-sdk&&cd100ask_imx6ull-sdk../repo/repoinit-uhttps://gitee.com/weidongshan/manif</div> </li> <li><a href="/article/1719956436269740032.htm" title="Linux嵌入式开发——uboot添加logo显示功能" target="_blank">Linux嵌入式开发——uboot添加logo显示功能</a> <span class="text-muted">跑不了的你</span> <a class="tag" taget="_blank" href="/search/ARM%E8%A3%B8%E6%9D%BF%E5%BC%80%E5%8F%91/1.htm">ARM裸板开发</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%9B%B8%E5%85%B3%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/1.htm">嵌入式相关基础知识</a> <div>文章目录uboot添加logo显示概述u-boot中添加logo操作步骤获取bmp格式图片制作logo图片数组文件在u-boot中添加logo显示函数调用修改common目录下的Makefile编译u-boot烧写测试uboot添加logo显示概述用到的工具和代码链接:https://github.com/acbbghhgf/linux_drivers/tree/master/arm-base/u</div> </li> <li><a href="/article/1713351034342027264.htm" title="ADB调试LInux嵌入式开发板中执行QT程序出现(EGL library doesn‘t support Emulator extensions)" target="_blank">ADB调试LInux嵌入式开发板中执行QT程序出现(EGL library doesn‘t support Emulator extensions)</a> <span class="text-muted">Leehowuxi</span> <a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/adb/1.htm">adb</a> <div>使用ADB工具调试linux嵌入式开发板。执行后出现如下问题:EGL不支持仿真器扩展。把它关闭就行了!在开发板操作系统执行以下命令:exportQT_QPA_EGLFS_INTEGRATION=nonebin文件可正常执行,问题解决!</div> </li> <li><a href="/article/1702383495889891328.htm" title="insmod驱动时提示版本与内核不一样" target="_blank">insmod驱动时提示版本与内核不一样</a> <span class="text-muted">养牛青年</span> <a class="tag" taget="_blank" href="/search/linux%E5%86%85%E6%A0%B8/1.htm">linux内核</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E6%A0%B8/1.htm">内核</a> <div>文章目录前言说明解决方法原因解说注意前言在linux嵌入式开发中,会遇到需要编译某个驱动模块放到开发板上使用的情况,但是编译出来的.ko文件放到内核中运行的时候却报错驱动的版本与内核本本不一样,并告诉你应该是什么版本的,如下:说明使用的内核:友善之臂适配mini2440开发板的linux-kernel_2.6.32.2编译的驱动:RTL8821CU.ko解决方法进入内核代码目录,这里一定注意,用来</div> </li> <li><a href="/article/1702316719403511808.htm" title="嵌入式linux led驱动有几种写法,嵌入式Linux驱动开发(二)——字符设备驱动之控制LED..." target="_blank">嵌入式linux led驱动有几种写法,嵌入式Linux驱动开发(二)——字符设备驱动之控制LED...</a> <span class="text-muted">陈咏开</span> <a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8Flinux/1.htm">嵌入式linux</a><a class="tag" taget="_blank" href="/search/led%E9%A9%B1%E5%8A%A8%E6%9C%89%E5%87%A0%E7%A7%8D%E5%86%99%E6%B3%95/1.htm">led驱动有几种写法</a> <div>同时,在这篇文章里面留下了两个问题,现在先来解决其中的第一个问题,就是如何用驱动程序来操作需要操作的硬件。关于开发板点亮LED的问题,在这里简单介绍一下,也可以参考之前我写的文章:嵌入式Linux开发——裸板程序点亮开发板上的LED灯首先为了操作硬件,看接线原理图是必不可少的一步,这几个LED的原理图相对来说比较简单,在这里说一下,如果需要看懂稍微复杂一点的原理图,可以参见:Linux嵌入式开发入</div> </li> <li><a href="/article/1700998561212215296.htm" title="Linux嵌入式开发学习 c++:day5" target="_blank">Linux嵌入式开发学习 c++:day5</a> <span class="text-muted">墨鱼馒头</span> <a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a> <div>【私有继承】基类的public成员和protected成员被继承后作为派生类的私有成员。默认的继承是私有继承。为了保证基类的部分外部接口特征能够在派生类中也存在,就必须在派生类中国重新定义同名的成员函数(重载)。【保护继承】基类的public和protected成员都以保护成员的身份出现在派生类中。保护级别的成员,除了自己的类内可以访问以外,其派生类也可以访问。【多态】首先来看面向对象(OOP)的</div> </li> <li><a href="/article/1692922888287498240.htm" title="【Linux开发笔记】《Linux嵌入式开发从0到1》(一):初探Linux——与Linux的初次相遇" target="_blank">【Linux开发笔记】《Linux嵌入式开发从0到1》(一):初探Linux——与Linux的初次相遇</a> <span class="text-muted">maoboxxx</span> <a class="tag" taget="_blank" href="/search/%E3%80%90Linux%E5%BC%80%E5%8F%91%E7%AC%94%E8%AE%B0%E3%80%91/1.htm">【Linux开发笔记】</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a> <div>1.什么是LinuxLinux就是一个操作系统,就是一个开源、自由的操作系统,就是一个免费使用和自由传播的类UNIX操作系统,就是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。简单来讲,Linux就是一个操作系统而已…初探Linux的时候,只需要知道Linux是个开源的操作系统就可以了,不要被其他的概念所束缚。2.Linux和Windows的区别和联系Linux和Window</div> </li> <li><a href="/article/1688678401017196544.htm" title="MacOS parallels desktop下的ubuntu 20.04软件源配置文件的修改" target="_blank">MacOS parallels desktop下的ubuntu 20.04软件源配置文件的修改</a> <span class="text-muted">BobCCCC</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F/1.htm">嵌入式</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a> <div>MacOSparallelsdesktop下的ubuntu20.04软件源配置文件的修改最近学习Linux嵌入式开发,在macOSpd下面安装ubuntu的时候给我装的最新的20.04,在Linux嵌入式开发的过程中,需要安装像vim,ckermit,qtcreator等文件的时候发现下载速度慢,问题出在下载来源这,如下图所示这里我们可以使用清华大学的软件镜像点击此处进入选择好对应的ubuntu版</div> </li> <li><a href="/article/1666643185046216704.htm" title="驱动开发--根文件系统" target="_blank">驱动开发--根文件系统</a> <span class="text-muted">sy_青柠</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>1、单片机开发属于嵌入式开发吗?广义:单片机开发属于嵌入式开发---(嵌入式微处理器开发)一般不带mmu(地址映射)狭义:单片机开发不属于嵌入式---(Linux嵌入式开发)一般带mmu(地址映射)2、ARM逻辑代码和驱动有什么区别?共同点:都能操作硬件不同点:ARM裸机:1、直接操作物理地址2、单独编译单独执行3、arm裸机同时只能执行一份代码4、arm裸机代码只需要一个main函数即可,在ma</div> </li> <li><a href="/article/1641103104780853248.htm" title="linux嵌入式总结,Linux嵌入式开发日常技术总结(4)" target="_blank">linux嵌入式总结,Linux嵌入式开发日常技术总结(4)</a> <span class="text-muted">依然有光</span> <a class="tag" taget="_blank" href="/search/linux%E5%B5%8C%E5%85%A5%E5%BC%8F%E6%80%BB%E7%BB%93/1.htm">linux嵌入式总结</a> <div>Miscfile显示文件总体信息$filelibbrowser_engine.solibbrowser_engine.so:ELF32-bitLSBsharedobject,ARM,version1(SYSV),dynamicallylinked,stripped$filebrowser/browser:ELF32-bitLSBexecutable,ARM,version1(SYSV),dynam</div> </li> <li><a href="/article/1641081298393030656.htm" title="Linux嵌入式开发 -- imx6ull 主频配置" target="_blank">Linux嵌入式开发 -- imx6ull 主频配置</a> <span class="text-muted">搁浅`</span> <a class="tag" taget="_blank" href="/search/Linux%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/1.htm">Linux嵌入式开发</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a><a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a> <div>imx6ull主频设置文章目录前言一、系统时钟来源二、7路PLL时钟源1.介绍2.主频设置3.代码编写总结前言  对于imx6ull系列芯片而言,默认工作频率为396MHZ,但标准工作频率为528MHZ,甚至可以达到696MHZ,本章主要介绍如何将工作频率设置到528MHZ。一、系统时钟来源  打开开发板原理图:    --第一张图为32.768KHz的晶振,为imx6ull的RTC时钟源;   </div> </li> <li><a href="/article/1622411573974827008.htm" title="Linux操作系列之07--- Linux配置NFS服务器及嵌入式开发挂载rootfs" target="_blank">Linux操作系列之07--- Linux配置NFS服务器及嵌入式开发挂载rootfs</a> <span class="text-muted">A红豆爸爸</span> <div>Linux操作文档系列之07Linux配置NFS服务器及嵌入式开发挂载rootfs目的:开机后Linux嵌入式开发板Kernel从NFS服务器读取rootfs文件系统,不用每次烧写Flash,方便开发1.开发环境连接方式image硬件连接方式:开发板和电脑,以及linux服务器连接在同一个路由器组成局域网内用USB串口将板子串口和电脑连接,安装好驱动Linux服务器可以在PC电脑安装虚拟机,并用桥</div> </li> <li><a href="/article/1611506991719546880.htm" title="正点原子-Linux嵌入式开发学习-第二期02" target="_blank">正点原子-Linux嵌入式开发学习-第二期02</a> <span class="text-muted">简单点的学玩</span> <a class="tag" taget="_blank" href="/search/linux%E5%AD%A6%E4%B9%A0/1.htm">linux学习</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>第七讲:IMX启动方式启动设备选择ARM-A系列的芯片支持多种启动方式,因此当你使用芯片的时候,你需要知道这一点(当然这一点也是取决于芯片手册的)芯片手册systemboot章节,介绍了IMX芯片的启动方式,boot的意思就是启动、引导程序的意思而我们以前学的M3系列的,它的启动方式就3种,而且程序的烧录地址是内部的ROM,但是IMX芯片的内部ROM我们无法使用,因为它里面存在着启动程序当我们使用</div> </li> <li><a href="/article/1611506992130588672.htm" title="正点原子-Linux嵌入式开发学习-第二期04" target="_blank">正点原子-Linux嵌入式开发学习-第二期04</a> <span class="text-muted">简单点的学玩</span> <a class="tag" taget="_blank" href="/search/linux%E5%AD%A6%E4%B9%A0/1.htm">linux学习</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a> <div>第十一讲:BSP工程管理BSP管理其实就是以前学stm32一样的单独为led写.h和.c,并且文件夹有很多种使用ubuntu的vscode创建bsp文件第一步:新建bsp文件夹,在bsp文件夹新建各个外设或者功能的文件夹(一定是在相应的文件夹中新键文件夹)第二步:在新建的clk、delay、led新建.h和,c文件,并且书写相应的代码第三步:移植imx6ul文件夹第四步:创建obj文件,用来装.o</div> </li> <li><a href="/article/1611506992550019072.htm" title="正点原子-Linux嵌入式开发学习-第二期05" target="_blank">正点原子-Linux嵌入式开发学习-第二期05</a> <span class="text-muted">简单点的学玩</span> <a class="tag" taget="_blank" href="/search/linux%E5%AD%A6%E4%B9%A0/1.htm">linux学习</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>第十三讲:按键实验1:原理图分析,按键按下低电平进入,不按下高电平对应的端口为:GPIO1_IO18复制上一次工程,记得makeclean清除上一次的文件程序编写1:新建key文件夹并新建bsp_key.c和bsp_key.h2:注意程序需要的引脚号-IOMUXC_UART1_CTS_B_GPIO1_IO18(不要选择错误)IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_G</div> </li> <li><a href="/article/1563313679301152768.htm" title="Linux嵌入式开发版贪吃蛇,嵌入式之贪吃蛇" target="_blank">Linux嵌入式开发版贪吃蛇,嵌入式之贪吃蛇</a> <span class="text-muted">桑一</span> <a class="tag" taget="_blank" href="/search/Linux%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91%E7%89%88%E8%B4%AA%E5%90%83%E8%9B%87/1.htm">Linux嵌入式开发版贪吃蛇</a> <div>《嵌入式之贪吃蛇》由会员分享,可在线阅读,更多相关《嵌入式之贪吃蛇(16页珍藏版)》请在人人文库网上搜索。1、嵌入式实验报告嵌入式实验报告题目名称贪吃蛇设计小组成员陈建能E钟勋E指导老师沈军民上交时间2011年6月16日一、实验目的1.了解和掌握嵌入式系统原理及程序编写2.用嵌入式系统设计简单的游戏二、实验内容及要求本实验利用嵌入式开发系统设计一个贪吃蛇的小游戏。采用32位ARM处理器。一开始出现</div> </li> <li><a href="/article/1346278377992040448.htm" title="Linux开山-入门篇" target="_blank">Linux开山-入门篇</a> <span class="text-muted">朱惕</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>Linux开山篇学习方向Linux运维工程师一般在大公司出现(百度腾讯阿里也称BTC),多个服务器。负责服务器的运维、优化、维护,处理服务器问题。Linux嵌入式开发工程师常见的有Java、大数据、Python、C/C++、PHP应用领域个人桌面windows在这个方便时比较强的,Linux相对来说这个领域会薄弱一些,Linux主要是做一些后台的管理和维护。服务器领域Linux在服务器领域是做的最</div> </li> <li><a href="/article/1305246749618638848.htm" title="linux嵌入式开发平台网卡驱动解决办法" target="_blank">linux嵌入式开发平台网卡驱动解决办法</a> <span class="text-muted">richermen</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a> <div>最近用了下树莓派和interEdison,本来打算使用一下网卡,可是发现树莓派和Edison竟然都编译不了官方的驱动,报错缺少/kenerl/bulid目录,查了下资料,原来是这些嵌入式平台都为了节省空间,都没有搭载源码,而在网卡的驱动程序中有需要调用系统的接口,但是没有源码,这些接口也就没有了,编译的时候就找不到接口,so,报错了。一编译驱动解决办法有两个:第一安装source-develsou</div> </li> <li><a href="/article/1304243002994102272.htm" title="Linux嵌入式开发经典网站" target="_blank">Linux嵌入式开发经典网站</a> <span class="text-muted">qutanzi</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a> <div>注:以下内容转自:http://blog.chinaunix.net/u2/81965/showart_1674967.html国内站点:ftp://ftp.altera.com/outgoing/release/http://www.china-vision.net/blog/user1/6/archives/2006/200696114213.htmlhttp://mail.google.co</div> </li> <li><a href="/article/1297790977511071744.htm" title="linux嵌入式开发切换交叉编译器" target="_blank">linux嵌入式开发切换交叉编译器</a> <span class="text-muted">lingdulebaishi</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>最近工作闲暇时候做了一个脚本,方便虚拟机里面切换交叉编译器用,因为前段时间工作时候遇到几个项目同时开工的情况,只做了一个虚拟机,里面搭建了5个交叉编译环境,切换起来较为麻烦,故此做了脚本,分享如下#!/bin/bashif[$BK_SUC];thenecho"readytosetPATHBK=$PATHBK!!!"exportPATH=$PATHBKelseecho"firstbackupPATH</div> </li> <li><a href="/article/1295534470434201600.htm" title="如何在linux嵌入式开发板上开机自动运行用户应用程序" target="_blank">如何在linux嵌入式开发板上开机自动运行用户应用程序</a> <span class="text-muted">少林达摩祖师</span> <a class="tag" taget="_blank" href="/search/embedded/1.htm">embedded</a> <div>开机后自动运行用户的应用程序或启动系统服务的命令保存在开发板根文件系统的/usr/etc/rc.local文件中。有的开发板开机后自动运行图形界面程序,需要按住ctrl+c让开发板进入到Linux的SHELL提示符界面。其实可通过注释掉rc.local文件中调用图形界面的命令,增加运行用户应用程序的命令,达到开机自动运行用户应用程序的目的。下面以我做的实验为例,描述具体的实现步骤。1.进入pc机的</div> </li> <li><a href="/article/1295149220528988160.htm" title="Linux嵌入式开发笔记(九)ROS2中调用自定义库(cpp+h)的方法" target="_blank">Linux嵌入式开发笔记(九)ROS2中调用自定义库(cpp+h)的方法</a> <span class="text-muted">Code_DZhangTeng</span> <a class="tag" taget="_blank" href="/search/ROS2/1.htm">ROS2</a><a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/C%2FC%2B%2B/1.htm">C/C++</a> <div>首先,已经可以根据demo仿写自己的工程,同时也就调用了系统自带的函数,这些函数在demo都有使用,很容易成功;其次,在上一篇中介绍了ROS2中系统API函数原型,这样也就可以调用demo中没有用到的系统中的函数;现在记录一下,ROS2中如何调用自定义cpp文件和h文件的方法。先来干货再举例,在Ubuntu1804中是没有IDE编译器的,所以自定义的cpp文件和h文件需要手动关联起来,同时调用路径</div> </li> <li><a href="/article/1294529635429720064.htm" title="如何在linux嵌入式开发板上开机自动运行用户应用程序" target="_blank">如何在linux嵌入式开发板上开机自动运行用户应用程序</a> <span class="text-muted">玖零大壮</span> <a class="tag" taget="_blank" href="/search/Linux%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0/1.htm">Linux系统学习</a> <div>开机后自动运行用户的应用程序或启动系统服务的命令保存在开发板根文件系统的/usr/etc/rc.local文件中。有的开发板开机后自动运行图形界面程序,需要按住ctrl+c让开发板进入到linux的SHELL提示符界面。其实可通过注释掉rc.local文件中调用图形界面的命令,增加运行用户应用程序的命令,达到开机自动运行用户应用程序的目的。下面以我做的实验为例,描述具体的实现步骤。该方法源于网络,</div> </li> <li><a href="/article/1293798219460976640.htm" title="第零步——建立wince开发环境" target="_blank">第零步——建立wince开发环境</a> <span class="text-muted">guoyang1007</span> <a class="tag" taget="_blank" href="/search/Wince%E5%BC%80%E5%8F%91/1.htm">Wince开发</a><a class="tag" taget="_blank" href="/search/wince/1.htm">wince</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/microsoft/1.htm">microsoft</a><a class="tag" taget="_blank" href="/search/makefile/1.htm">makefile</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F/1.htm">嵌入式</a><a class="tag" taget="_blank" href="/search/%E9%80%9A%E8%AE%AF/1.htm">通讯</a> <div>从今天开始做一些Wince开发,还涉及到一些wince下的directshow编程。研究了整整一天,终于建立好了编译开发环境。1、wince开发不同于linux嵌入式开发,它需要几个支撑平台。首先是PlatformBuilder,这是微软出品专门用来开发wince的联机调试工具。应用PlatformBuilder,我们可以定制自己的产品上的wince内核,并支持内核级的调试,这就好像linux在编</div> </li> <li><a href="/article/1293446851969753088.htm" title="配置Ubuntu的tftp服务" target="_blank">配置Ubuntu的tftp服务</a> <span class="text-muted">阿基米东</span> <a class="tag" taget="_blank" href="/search/Linux%E5%9F%BA%E7%A1%80/1.htm">Linux基础</a> <div>tftp(TrivialFileTransferProtocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,它提供不复杂、开销不大的文件传输服务,端口号为69。我们在做ARM-Linux嵌入式开发中,经常需要用到tftp在Linux服务端和开发板间进行进行文件传输,因为我所使用的是Ubuntu,所以下面主要介绍Ubuntu下如何启动、配置tftp</div> </li> <li><a href="/article/65.htm" title="Java常用排序算法/程序员必须掌握的8大排序算法" target="_blank">Java常用排序算法/程序员必须掌握的8大排序算法</a> <span class="text-muted">cugfy</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序。 先来看看8种排序之间的关系:   1.直接插入排序 (1</div> </li> <li><a href="/article/192.htm" title="【Spark102】Spark存储模块BlockManager剖析" target="_blank">【Spark102】Spark存储模块BlockManager剖析</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/manager/1.htm">manager</a> <div>Spark围绕着BlockManager构建了存储模块,包括RDD,Shuffle,Broadcast的存储都使用了BlockManager。而BlockManager在实现上是一个针对每个应用的Master/Executor结构,即Driver上BlockManager充当了Master角色,而各个Slave上(具体到应用范围,就是Executor)的BlockManager充当了Slave角色</div> </li> <li><a href="/article/319.htm" title="linux 查看端口被占用情况详解" target="_blank">linux 查看端口被占用情况详解</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E7%AB%AF%E5%8F%A3%E5%8D%A0%E7%94%A8/1.htm">端口占用</a><a class="tag" taget="_blank" href="/search/netstat/1.htm">netstat</a><a class="tag" taget="_blank" href="/search/lsof/1.htm">lsof</a> <div>经常在启动一个程序会碰到端口被占用,这里讲一下怎么查看端口是否被占用,及哪个程序占用,怎么Kill掉已占用端口的程序   1、lsof -i:port port为端口号   [root@slave /data/spark-1.4.0-bin-cdh4]# lsof -i:8080 COMMAND   PID USER   FD   TY</div> </li> <li><a href="/article/446.htm" title="Hosts文件使用" target="_blank">Hosts文件使用</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/hosts/1.htm">hosts</a><a class="tag" taget="_blank" href="/search/locahost/1.htm">locahost</a> <div>     一切都要从localhost说起,经常在tomcat容器起动后,访问页面时输入http://localhost:8088/index.jsp,大家都知道localhost代表本机地址,如果本机IP是10.10.134.21,那就相当于http://10.10.134.21:8088/index.jsp,有时候也会看到http: 127.0.0.1:</div> </li> <li><a href="/article/573.htm" title="java excel工具" target="_blank">java excel工具</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/Java+excel/1.htm">Java excel</a> <div>直接上代码,一看就懂,利用的是jxl: import java.io.File; import java.io.IOException; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import jxl.write.Label; import </div> </li> <li><a href="/article/700.htm" title="web报表工具finereport常用函数的用法总结(数组函数)" target="_blank">web报表工具finereport常用函数的用法总结(数组函数)</a> <span class="text-muted">老A不折腾</span> <a class="tag" taget="_blank" href="/search/finereport/1.htm">finereport</a><a class="tag" taget="_blank" href="/search/web%E6%8A%A5%E8%A1%A8/1.htm">web报表</a><a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0%E6%80%BB%E7%BB%93/1.htm">函数总结</a> <div>ADD2ARRAY ADDARRAY(array,insertArray, start):在数组第start个位置插入insertArray中的所有元素,再返回该数组。 示例: ADDARRAY([3,4, 1, 5, 7], [23, 43, 22], 3)返回[3, 4, 23, 43, 22, 1, 5, 7]. ADDARRAY([3,4, 1, 5, 7], "测试&q</div> </li> <li><a href="/article/827.htm" title="游戏服务器网络带宽负载计算" target="_blank">游戏服务器网络带宽负载计算</a> <span class="text-muted">墙头上一根草</span> <a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>家庭所安装的4M,8M宽带。其中M是指,Mbits/S 其中要提前说明的是: 8bits = 1Byte 即8位等于1字节。我们硬盘大小50G。意思是50*1024M字节,约为 50000多字节。但是网宽是以“位”为单位的,所以,8Mbits就是1M字节。是容积体积的单位。 8Mbits/s后面的S是秒。8Mbits/s意思是 每秒8M位,即每秒1M字节。 我是在计算我们网络流量时想到的</div> </li> <li><a href="/article/954.htm" title="我的spring学习笔记2-IoC(反向控制 依赖注入)" target="_blank">我的spring学习笔记2-IoC(反向控制 依赖注入)</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/Spring+3+%E7%B3%BB%E5%88%97/1.htm">Spring 3 系列</a> <div>IoC(反向控制 依赖注入)这是Spring提出来了,这也是Spring一大特色。这里我不用多说,我们看Spring教程就可以了解。当然我们不用Spring也可以用IoC,下面我将介绍不用Spring的IoC。 IoC不是框架,她是java的技术,如今大多数轻量级的容器都会用到IoC技术。这里我就用一个例子来说明: 如:程序中有 Mysql.calss 、Oracle.class 、SqlSe</div> </li> <li><a href="/article/1081.htm" title="高性能mysql 之 选择存储引擎(一)" target="_blank">高性能mysql 之 选择存储引擎(一)</a> <span class="text-muted">annan211</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/InnoDB/1.htm">InnoDB</a><a class="tag" taget="_blank" href="/search/MySQL%E5%BC%95%E6%93%8E/1.htm">MySQL引擎</a><a class="tag" taget="_blank" href="/search/%E5%AD%98%E5%82%A8%E5%BC%95%E6%93%8E/1.htm">存储引擎</a> <div> 1 没有特殊情况,应尽可能使用InnoDB存储引擎。   原因:InnoDB 和 MYIsAM 是mysql 最常用、使用最普遍的存储引擎。其中InnoDB是最重要、最广泛的存储引擎。她   被设计用来处理大量的短期事务。短期事务大部分情况下是正常提交的,很少有回滚的情况。InnoDB的性能和自动崩溃   恢复特性使得她在非事务型存储的需求中也非常流行,除非有非常</div> </li> <li><a href="/article/1208.htm" title="UDP网络编程" target="_blank">UDP网络编程</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/UDP%E7%BC%96%E7%A8%8B/1.htm">UDP编程</a><a class="tag" taget="_blank" href="/search/%E5%B1%80%E5%9F%9F%E7%BD%91%E7%BB%84%E6%92%AD/1.htm">局域网组播</a> <div>  UDP是基于无连接的,不可靠的传输   与TCP/IP相反       UDP实现私聊,发送方式客户端,接受方式服务器 package netUDP_sc; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.Ine</div> </li> <li><a href="/article/1335.htm" title="JQuery对象的val()方法执行结果分析" target="_blank">JQuery对象的val()方法执行结果分析</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a> <div>        JavaScript中,如果id对应的标签不存在(同理JAVA中,如果对象不存在),则调用它的方法会报错或抛异常。在实际开发中,发现JQuery在id对应的标签不存在时,调其val()方法不会报错,结果是undefined。         </div> </li> <li><a href="/article/1462.htm" title="http请求测试实例(采用json-lib解析)" target="_blank">http请求测试实例(采用json-lib解析)</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a> <div>        由于fastjson只支持JDK1.5版本,因些对于JDK1.4的项目,可以采用json-lib来解析JSON数据。如下是http请求的另外一种写法,仅供参考。 package com; import java.util.HashMap; import java.util.Map; import </div> </li> <li><a href="/article/1589.htm" title="【RPC框架Hessian四】Hessian与Spring集成" target="_blank">【RPC框架Hessian四】Hessian与Spring集成</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hessian/1.htm">hessian</a> <div>在【RPC框架Hessian二】Hessian 对象序列化和反序列化一文中介绍了基于Hessian的RPC服务的实现步骤,在那里使用Hessian提供的API完成基于Hessian的RPC服务开发和客户端调用,本文使用Spring对Hessian的集成来实现Hessian的RPC调用。   定义模型、接口和服务器端代码 |---Model    &nb</div> </li> <li><a href="/article/1716.htm" title="【Mahout三】基于Mahout CBayes算法的20newsgroup流程分析" target="_blank">【Mahout三】基于Mahout CBayes算法的20newsgroup流程分析</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Mahout/1.htm">Mahout</a> <div>1.Mahout环境搭建  1.下载Mahout http://mirror.bit.edu.cn/apache/mahout/0.10.0/mahout-distribution-0.10.0.tar.gz    2.解压Mahout  3. 配置环境变量 vim /etc/profile export HADOOP_HOME=/home</div> </li> <li><a href="/article/1843.htm" title="nginx负载tomcat遇非80时的转发问题" target="_blank">nginx负载tomcat遇非80时的转发问题</a> <span class="text-muted">ronin47</span> <div>  nginx负载后端容器是tomcat(其它容器如WAS,JBOSS暂没发现这个问题)非80端口,遇到跳转异常问题。解决的思路是:$host:port        详细如下:    该问题是最先发现的,由于之前对nginx不是特别的熟悉所以该问题是个入门级别的: ? 1 2 3 4 5 </div> </li> <li><a href="/article/1970.htm" title="java-17-在一个字符串中找到第一个只出现一次的字符" target="_blank">java-17-在一个字符串中找到第一个只出现一次的字符</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class FirstShowOnlyOnceElement { /**Q17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b * 1.int[] count:count[i]表示i对应字符出现的次数 * 2.将26个英文字母映射:a-z <--> 0-25 * 3.假设全部字母都是小写 */ pu</div> </li> <li><a href="/article/2097.htm" title="mongoDB 复制集" target="_blank">mongoDB 复制集</a> <span class="text-muted">开窍的石头</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a> <div>mongo的复制集就像mysql的主从数据库,当你往其中的主复制集(primary)写数据的时候,副复制集(secondary)会自动同步主复制集(Primary)的数据,当主复制集挂掉以后其中的一个副复制集会自动成为主复制集。提供服务器的可用性。和防止当机问题             mo</div> </li> <li><a href="/article/2224.htm" title="[宇宙与天文]宇宙时代的经济学" target="_blank">[宇宙与天文]宇宙时代的经济学</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%BB%8F%E6%B5%8E/1.htm">经济</a> <div>     宇宙尺度的交通工具一般都体型巨大,造价高昂。。。。。      在宇宙中进行航行,近程采用反作用力类型的发动机,需要消耗少量矿石燃料,中远程航行要采用量子或者聚变反应堆发动机,进行超空间跳跃,要消耗大量高纯度水晶体能源      以目前地球上国家的经济发展水平来讲,</div> </li> <li><a href="/article/2351.htm" title="Git忽略文件" target="_blank">Git忽略文件</a> <span class="text-muted">Cwind</span> <a class="tag" taget="_blank" href="/search/git/1.htm">git</a> <div>     有很多文件不必使用git管理。例如Eclipse或其他IDE生成的项目文件,编译生成的各种目标或临时文件等。使用git status时,会在Untracked files里面看到这些文件列表,在一次需要添加的文件比较多时(使用git add . / git add -u),会把这些所有的未跟踪文件添加进索引。 ==== ==== ==== 一些牢骚</div> </li> <li><a href="/article/2478.htm" title="MySQL连接数据库的必须配置" target="_blank">MySQL连接数据库的必须配置</a> <span class="text-muted">dashuaifu</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E8%BF%9E%E6%8E%A5%E6%95%B0%E6%8D%AE%E5%BA%93%E9%85%8D%E7%BD%AE/1.htm">连接数据库配置</a> <div>MySQL连接数据库的必须配置   1.driverClass:com.mysql.jdbc.Driver   2.jdbcUrl:jdbc:mysql://localhost:3306/dbname   3.user:username   4.password:password   其中1是驱动名;2是url,这里的‘dbna</div> </li> <li><a href="/article/2605.htm" title="一生要养成的60个习惯" target="_blank">一生要养成的60个习惯</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E4%B9%A0%E6%83%AF/1.htm">习惯</a> <div>一生要养成的60个习惯 第1篇 让你更受大家欢迎的习惯 1 守时,不准时赴约,让别人等,会失去很多机会。 如何做到: ①该起床时就起床, ②养成任何事情都提前15分钟的习惯。 ③带本可以随时阅读的书,如果早了就拿出来读读。 ④有条理,生活没条理最容易耽误时间。 ⑤提前计划:将重要和不重要的事情岔开。 ⑥今天就准备好明天要穿的衣服。 ⑦按时睡觉,这会让按时起床更容易。 2 注重</div> </li> <li><a href="/article/2732.htm" title="[介绍]Yii 是什么" target="_blank">[介绍]Yii 是什么</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/yii2/1.htm">yii2</a> <div>Yii 是一个高性能,基于组件的 PHP 框架,用于快速开发现代 Web 应用程序。名字 Yii (读作 易)在中文里有“极致简单与不断演变”两重含义,也可看作 Yes It Is! 的缩写。 Yii 最适合做什么? Yii 是一个通用的 Web 编程框架,即可以用于开发各种用 PHP 构建的 Web 应用。因为基于组件的框架结构和设计精巧的缓存支持,它特别适合开发大型应</div> </li> <li><a href="/article/2859.htm" title="Linux SSH常用总结" target="_blank">Linux SSH常用总结</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/linux+ssh/1.htm">linux ssh</a><a class="tag" taget="_blank" href="/search/SSHD/1.htm">SSHD</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2186931 一、连接到远程主机   格式: ssh name@remoteserver 例如: ssh ickes@192.168.27.211   二、连接到远程主机指定的端口   格式: ssh name@remoteserver -p 22 例如: ssh i</div> </li> <li><a href="/article/2986.htm" title="快速上传头像到服务端工具类FaceUtil" target="_blank">快速上传头像到服务端工具类FaceUtil</a> <span class="text-muted">gundumw100</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>快速迭代用 import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOExceptio</div> </li> <li><a href="/article/3113.htm" title="jQuery入门之怎么使用" target="_blank">jQuery入门之怎么使用</a> <span class="text-muted">ini</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>jQuery的强大我何问起(个人主页:hovertree.com)就不用多说了,那么怎么使用jQuery呢?   首先,下载jquery。下载地址:http://hovertree.com/hvtart/bjae/b8627323101a4994.htm,一个是压缩版本,一个是未压缩版本,如果在开发测试阶段,可以使用未压缩版本,实际应用一般使用压缩版本(min)。然后就在页面上引用。</div> </li> <li><a href="/article/3240.htm" title="带filter的hbase查询优化" target="_blank">带filter的hbase查询优化</a> <span class="text-muted">kane_xie</span> <a class="tag" taget="_blank" href="/search/%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96/1.htm">查询优化</a><a class="tag" taget="_blank" href="/search/hbase/1.htm">hbase</a><a class="tag" taget="_blank" href="/search/RandomRowFilter/1.htm">RandomRowFilter</a> <div> 问题描述 hbase scan数据缓慢,server端出现LeaseException。hbase写入缓慢。   问题原因 直接原因是: hbase client端每次和regionserver交互的时候,都会在服务器端生成一个Lease,Lease的有效期由参数hbase.regionserver.lease.period确定。如果hbase scan需</div> </li> <li><a href="/article/3367.htm" title="java设计模式-单例模式" target="_blank">java设计模式-单例模式</a> <span class="text-muted">men4661273</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B/1.htm">单例</a><a class="tag" taget="_blank" href="/search/%E6%9E%9A%E4%B8%BE/1.htm">枚举</a><a class="tag" taget="_blank" href="/search/%E5%8F%8D%E5%B0%84/1.htm">反射</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a> <div>         单例模式1,饿汉模式 //饿汉式单例类.在类初始化时,已经自行实例化 public class Singleton1 { //私有的默认构造函数 private Singleton1() {} //已经自行实例化 private static final Singleton1 singl</div> </li> <li><a href="/article/3494.htm" title="mongodb 查询某一天所有信息的3种方法,根据日期查询" target="_blank">mongodb 查询某一天所有信息的3种方法,根据日期查询</a> <span class="text-muted">qiaolevip</span> <a class="tag" taget="_blank" href="/search/%E6%AF%8F%E5%A4%A9%E8%BF%9B%E6%AD%A5%E4%B8%80%E7%82%B9%E7%82%B9/1.htm">每天进步一点点</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%B0%B8%E6%97%A0%E6%AD%A2%E5%A2%83/1.htm">学习永无止境</a><a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/%E7%BA%B5%E8%A7%82%E5%8D%83%E8%B1%A1/1.htm">纵观千象</a> <div>// mongodb的查询真让人难以琢磨,就查询单天信息,都需要花费一番功夫才行。 // 第一种方式: coll.aggregate([ {$project:{sendDate: {$substr: ['$sendTime', 0, 10]}, sendTime: 1, content:1}}, {$match:{sendDate: '2015-</div> </li> <li><a href="/article/3621.htm" title="二维数组转换成JSON" target="_blank">二维数组转换成JSON</a> <span class="text-muted">tangqi609567707</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">二维数组</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a> <div>原文出处:http://blog.csdn.net/springsen/article/details/7833596 public class Demo {     public static void main(String[] args) {        String[][] blogL</div> </li> <li><a href="/article/3748.htm" title="erlang supervisor" target="_blank">erlang supervisor</a> <span class="text-muted">wudixiaotie</span> <a class="tag" taget="_blank" href="/search/erlang/1.htm">erlang</a> <div>定义supervisor时,如果是监控celuesimple_one_for_one则删除children的时候就用supervisor:terminate_child (SupModuleName, ChildPid),如果shutdown策略选择的是brutal_kill,那么supervisor会调用exit(ChildPid, kill),这样的话如果Child的behavior是gen_</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>