【codecombat源码解读】【源码回调】【源码编程图片】fly 1.4源码

时间:2024-11-25 02:45:33 来源:imgui源码分享 编辑:死神源码

1.如何编译arm linux的go
2.linux运行arm程序armlinux程序
3.armlinux安装apkarmlinux安装
4.出租车计价器

fly 1.4源码

如何编译arm linux的go

       Golang也就是Go语言,现在已经发行到1.4.1版本了,语言特性优越性和背后Google强大靠山什么的就不多说了。Golang的官方提供了多个平台上的二进制安装包,遗憾的是并非没有发布ARM平台的二进制安装包。ARM平台没办法直接从官网下载二进制安装包来安装,好在Golang是支持多平台并且开源的语言,因此可以通过直接在ARM平台上编译源代码来安装。整个过程主要包括编译工具配置、获取Golang源代码、设置Golang编译环境变量、编译、配置Golang行环境变量等步骤。

       æ³¨ï¼šæœ¬æ–‡é€‰ç”¨æ ‘莓派做测试,因为树莓派是基于ARM平台的。

       1、编译工具配置

       æ®è¯´ä¸‹ä¸ªç‰ˆæœ¬çš„golang编译工具要使用golang自己来写,但目前还是使用C编译工具的。因此,首先要配置好C编译工具:

       1.1 在Ubuntu或Debian平台上可以使用sudo apt-get install gcc libc6-dev命令安装,树莓派的RaspBian系统是基于Debian修改的,所以可以使用这种方法安装。

       1.2 在RedHat或CentOS 6平台上可以使用sudo yum install gcc libc-devel命令安装。

       å®‰è£…完成后可以输入 gcc --version命令验证是否成功安装。

       2、获取golang源代码

       2.1 直接从官网下载源代码压缩包。

       golang官网提供golang的源代码压缩包,可以直接下载,最新的1.4.1版本源代码链接:/golang/go1.4.1.src.tar.gz

       2.2 使用git工具获取。

       golang使用git版本管理工具,也可以使用git获取golang源代码。推荐使用这个方法,因为以后可以随时获取最新的golang源代码。

       2.2.1 首先确认ARM平台上已经安装了git工具,可以使用git --version命令确认。一般linux平台都安装了git,没有的话可以自行安装,不同平台的安装方法可以参考:/download/linux

       2.2.2 克隆远程golang的git仓库到本地

       åœ¨ç»ˆç«¯cd到你想要安装golang的目录,确保该目录下没有名为go的目录。然后以下命令获取代码仓库:

       git clone /go

       å¤§é™†åœ°åŒºå¯èƒ½ä¼šèŽ·å–失败,在不翻墙的情况下我试了几次都没成功,原因大家都懂的。好在google已经将golang也托管到github上面,所以也可以通过下面命令获取:

       git clone /golang/go.git

       è§†ç½‘络情况,下载可能需要不少时间。我2M的带宽花了将近两个小时才下载完,虽然整个项目不过几十兆= =

       ä¸‹è½½å®ŒæˆåŽï¼Œå¯ä»¥çœ‹åˆ°ç›®å½•ä¸‹å¤šäº†ä¸€ä¸ªgo目录,里面即为golang的源代码,在终端上执行cd go命令进入该目录。

       æ‰§è¡Œä¸‹é¢å‘½ä»¤æ£€å‡ºgo1.4.1版本的源代码,因为现在已经有新的代码提交上去了,最新的代码可能不是最稳定的:

       git checkout go1.4.1

       è‡³æ­¤ï¼Œæœ€æ–°1.4.1发行版的源代码获取完毕

       3、设置golang的编译环境变量

       ä¸»è¦æœ‰GOROOT、GOOS、GOARCH、GOARM四个环境变量需要设置,先解释四个环境变量的意义。

       3.1 GOROOT

       ä¸»è¦ä»£è¡¨golang树结构目录的路径,也就是上面git检出的go目录。一般可以不用设置这个环境变量,因为编译的时候默认会以go目录下src子目录中的all.bash脚本运行时的父目录作为GOROOT的值。为了保险起见,可以直接设置为go目录的路径。

       3.2 GOOS和GOARCH

       åˆ†åˆ«ä»£è¡¨ç¼–译的目标系统和平台,可选值如下:

       GOOS GOARCH

       darwin

       darwin amd

       dragonfly

       dragonfly amd

       freebsd

       freebsd amd

       freebsd arm

       linux

       linux amd

       linux arm

       netbsd

       netbsd amd

       netbsd arm

       openbsd

       openbsd amd

       plan9

       plan9 amd

       solaris codecombat源码解读 amd

       windows

       windows amd

       éœ€è¦æ³¨æ„çš„是这两个值代表的是目标系统和平台,而不是编译源代码的系统和平台。树莓派的RaspBian是linux系统,所以这些GOOS设置为linux,GOARCH设置为arm。

       3.3 GOARM

       è¡¨ç¤ºä½¿ç”¨çš„浮点运算协处理器版本号,只对arm平台有用,可选值有5,6,7。如果是在目标平台上编译源代码,这个值可以不设置,它会自动判断需要使用哪一个版本。

       æ€»ç»“下来,在树莓派上设置golang的编译环境变量,可编辑$HOME/.bashrc文件,在末尾添加下面内容:

       export GOROOT=你的go目录路径

       export GOOS=linux

       export GOARCH=arm

       ç¼–辑完后保存,执行source ~/.bashrc命令让修改生效。

       4、编译源代码

       çŽ¯å¢ƒå˜é‡é…ç½®å®Œæˆè‡ªåŽå°±å¯ä»¥å¼€å§‹ç¼–译源代码。在go目录下的src子目录中,主要有all.bash和make.bash两个脚本(另外还有两个all.bat和make.bat脚本适用于window平台)。编译实际上就是执行其中一个脚本,两者的区别在于all.bash在编译完成后还会执行一些测试套件。如果希望只编译不测试,可以运行make.bash脚本。使用cd命令进入go下src目录,执行./all.bash或者./make.bash命令即可开始编译。由于硬件情况不同,编译耗费的时间不同。在我的B型树莓派编译过程花费了将近半个小时,编译完成后执行的测试套件又花费了差不多一个小时,总共花费了一个半小时左右。

       5、配置golang运行环境变量

       ç¼–译完成后,go目录下会生成bin目录,里面就是go的运行脚本。为了以后使用方法,可以将这个bin路径添加到PATH环境变量中。同样编辑~/.bashrc文件,因为前面设置过GOROOT环境变量指向go目录了,所以只需要在末尾加上

       export PATH=$PATH:$GOROOT/bin

       ä¿å­˜åŽåŒæ ·æ‰§è¡Œsource ~/.bashrc命令让环境变量生效。

       è‡³æ­¤ï¼Œgolang源代码编译安装成功。执行go version应该就能看到当前golang的版本信息,表示编译安装成功。

linux运行arm程序armlinux程序

       å¦‚何编译armlinux的go?

       Golang也就是Go语言,现在已经发行到1.4.1版本了,语言特性优越性和背后Google强大靠山什么的就不多说了。Golang的官方提供了多个平台上的二进制安装包,遗憾的是并非没有发布ARM平台的二进制安装包。ARM平台没办法直接从官网下载二进制安装包来安装,好在Golang是支持多平台并且开源的语言,因此可以通过直接在ARM平台上编译源代码来安装。整个过程主要包括编译工具配置、获取Golang源代码、设置Golang编译环境变量、编译、配置Golang行环境变量等步骤。

       æ³¨ï¼šæœ¬æ–‡é€‰ç”¨æ ‘莓派做测试,因为树莓派是基于ARM平台的。

       1、编译工具配置

       æ®è¯´ä¸‹ä¸ªç‰ˆæœ¬çš„golang编译工具要使用golang自己来写,但目前还是使用C编译工具的。因此,首先要配置好C编译工具:

       1.1在Ubuntu或Debian平台上可以使用sudoapt-getinstallgcclibc6-dev命令安装,树莓派的RaspBian系统是基于Debian修改的,所以可以使用这种方法安装。

       1.2在RedHat或CentOS6平台上可以使用sudoyuminstallgcclibc-devel命令安装。

       å®‰è£…完成后可以输入gcc--version命令验证是否成功安装。

       2、获取golang源代码

       2.1直接从官网下载源代码压缩包。

       golang官网提供golang的源代码压缩包,可以直接下载,最新的1.4.1版本源代码链接:/golang/go1.4.1.src.tar.gz

       2.2使用git工具获取。

       golang使用git版本管理工具,也可以使用git获取golang源代码。推荐使用这个方法,因为以后可以随时获取最新的golang源代码。

       2.2.1首先确认ARM平台上已经安装了git工具,可以使用git--version命令确认。一般linux平台都安装了git,没有的话可以自行安装,不同平台的安装方法可以参考:/download/linux

       2.2.2克隆远程golang的git仓库到本地

       åœ¨ç»ˆç«¯cd到你想要安装golang的目录,确保该目录下没有名为go的目录。然后以下命令获取代码仓库:

       gitclone/go

       å¤§é™†åœ°åŒºå¯èƒ½ä¼šèŽ·å–失败,在不翻墙的情况下我试了几次都没成功,原因大家都懂的。好在google已经将golang也托管到github上面,所以也可以通过下面命令获取:

       gitclone/golang/go.git

       è§†ç½‘络情况,下载可能需要不少时间。我2M的带宽花了将近两个小时才下载完,虽然整个项目不过几十兆==

       ä¸‹è½½å®ŒæˆåŽï¼Œå¯ä»¥çœ‹åˆ°ç›®å½•ä¸‹å¤šäº†ä¸€ä¸ªgo目录,里面即为golang的源代码,在终端上执行cdgo命令进入该目录。

       æ‰§è¡Œä¸‹é¢å‘½ä»¤æ£€å‡ºgo1.4.1版本的源代码,因为现在已经有新的代码提交上去了,最新的代码可能不是最稳定的:

       gitcheckoutgo1.4.1

       è‡³æ­¤ï¼Œæœ€æ–°1.4.1发行版的源代码获取完毕

       3、设置golang的编译环境变量

       ä¸»è¦æœ‰GOROOT、GOOS、GOARCH、GOARM四个环境变量需要设置,先解释四个环境变量的意义。

       3.1GOROOT

       ä¸»è¦ä»£è¡¨golang树结构目录的路径,也就是上面git检出的go目录。一般可以不用设置这个环境变量,因为编译的时候默认会以go目录下src子目录中的all.bash脚本运行时的父目录作为GOROOT的值。为了保险起见,可以直接设置为go目录的路径。

       3.2GOOS和GOARCH

       åˆ†åˆ«ä»£è¡¨ç¼–译的目标系统和平台,可选值如下:

       GOOSGOARCH

       darwin

       darwinamd

       dragonfly

       dragonflyamd

       freebsd

       freebsdamd

       freebsdarm

       linux

       linuxamd

       linuxarm

       netbsd

       netbsdamd

       netbsdarm

       openbsd

       openbsdamd

       plan

       plan9amd

       solarisamd

       windows

       windowsamd

       éœ€è¦æ³¨æ„çš„是这两个值代表的是目标系统和平台,而不是编译源代码的系统和平台。树莓派的RaspBian是linux系统,所以这些GOOS设置为linux,GOARCH设置为arm。

       3.3GOARM

       è¡¨ç¤ºä½¿ç”¨çš„浮点运算协处理器版本号,只对arm平台有用,可选值有5,6,7。如果是在目标平台上编译源代码,这个值可以不设置,它会自动判断需要使用哪一个版本。

       æ€»ç»“下来,在树莓派上设置golang的编译环境变量,可编辑$HOME/.bashrc文件,在末尾添加下面内容:

       exportGOROOT=你的go目录路径

       exportGOOS=linux

       exportGOARCH=arm

       ç¼–辑完后保存,执行source~/.bashrc命令让修改生效。

       4、编译源代码

       çŽ¯å¢ƒå˜é‡é…ç½®å®Œæˆè‡ªåŽå°±å¯ä»¥å¼€å§‹ç¼–译源代码。在go目录下的src子目录中,主要有all.bash和make.bash两个脚本(另外还有两个all.bat和make.bat脚本适用于window平台)。编译实际上就是执行其中一个脚本,两者的区别在于all.bash在编译完成后还会执行一些测试套件。如果希望只编译不测试,可以运行make.bash脚本。使用cd命令进入go下src目录,执行./all.bash或者./make.bash命令即可开始编译。由于硬件情况不同,编译耗费的时间不同。在我的B型树莓派编译过程花费了将近半个小时,编译完成后执行的测试套件又花费了差不多一个小时,总共花费了一个半小时左右。

       5、配置golang运行环境变量

       ç¼–译完成后,go目录下会生成bin目录,里面就是go的运行脚本。为了以后使用方法,可以将这个bin路径添加到PATH环境变量中。同样编辑~/.bashrc文件,因为前面设置过GOROOT环境变量指向go目录了,所以只需要在末尾加上

       exportPATH=$PATH:$GOROOT/bin

       ä¿å­˜åŽåŒæ ·æ‰§è¡Œsource~/.bashrc命令让环境变量生效。

       è‡³æ­¤ï¼Œgolang源代码编译安装成功。执行goversion应该就能看到当前golang的版本信息,表示编译安装成功。

       linux下ARM平台编译编写的完成程序如何在windows环境下运行?

       ç›´æŽ¥åœ¨window下运行不了。只能在window下安装虚拟机,再安装linux系统,在虚拟机下的linux里gcc编译你的程序.

       arm技术需要学什么专业?

       åˆšå¼€å§‹ï¼š1)学习Linux系统安装、常用命令、应用程序安装。2)学习Linux下的C编程、这本书必学《UNIX环境高级编程》、《UNIX网络编程》,RechardStevens写的,C高手大都学习过《C和指针》、《C缺陷与陷阱》、《高质量C/C++编程指南》、《C专家编程》、《TheCprogrammingLanguage》3)程序员大都要学:数据结构,嵌入式程序员数据结构必学!4)底层开发人员大都要学:微机原理、计算机体系结构,嵌入式开发人员必学!5)单片机可以让一个从事软件开发的人了解和如何操作硬件,有必要学,因为一开始就从ARM入手,不太现实!6)ARM体系结构,其中有汇编。7)数字电路有必要学习,不然你在做底层开发时真的会不知道怎么看原理图,起码也得懂与入门吧。8)ARM+Linux应用程序开发(前提是要有开发板)到此,勉强算是在嵌入式Linux这个行业有了初步入门了,但遗憾的是这还远远不够,还得继续,因为这上嵌入式,得变成高手。9)要做底层开发,就必须知道软硬件之间是如何衔接和配合工作的,那么电子技术应该要好好学习了,很多时候会用到模拟电路知识,这是区别好手与菜鸟的不同之处之一。)Linux下的汇编要学,这样你才能真正了解你写的程序是如何在一个特定的硬件上跑的。这是区别好手与菜鸟的不同之处之二。)TCP/IP协议栈要学,所有的嵌入式高手都得掌握的东西,这是区别好手与菜鸟的不同之处之三。)有了这些东西,拿下Linux驱动已经不再话下,需要你去学习Linux内核源代码和Linux驱动程序设计,这是一个技术升华。到此,你已经算是嵌入式Linux的中级人物了,继续往下:)音频、视频的解码译码技术你得学。)各种IC,各种bootloader你能够参与其开发设计。)自行设计开发新产品,新技术。

       arm版的ubuntu可以安装什么软件?可以和xubuntu的软件通用吗?

       æž¶æž„不一样一个x一个arm,软件不能通用,不过linux一般都提供源代码的,用arm-linux-gcc编译一下就能用了.

armlinux安装apkarmlinux安装

       å®‰è£…好arm-linux-gcc后,如何设置环境变量?

       ä»¥ä¸Š3个其实都是一样的作用,都是通过改变PATH环境变量。

不同的是:/etc/profile是在启动一个交互登陆shell的时候被调用(通过/bin/login登陆,TTY上的开机登录就是这个)/etc/bashrc则是在一个交互的非登陆shell启动的时候被调用(通过命令行运行,例如在命令行输入bash)所以怎么设置就要看需要,一般来说,像这种设置工具链的环境变量,设置在/etc/profile里会更加好。export是一个用于设置环境变量的指令,但是BASH支持直接设置,所以如果你的机器是BASH作为shell的话(一般Linux都是的),可以不使用export。pathmunge也是一个指令,是一个直接用于添加路径到PATH环境变量的指令。

       linux下如何安装安卓的APK包?

       1、在linux中安装virtualbox,然后安装制安卓系统,再知安装apk2、尝试安装shashlink,这个是安卓的一个模拟库,一般来说,支持道x的安卓的apk才可以运行,只支持arm的不能运行。

       å¦‚何编译armlinux的go?

       Golang也就是Go语言,现在已经发行到1.4.1版本了,语言特性优越性和背后Google强大靠山什么的就不多说了。Golang的官方提供了多个平台上的二进制安装包,遗憾的是并非没有发布ARM平台的二进制安装包。ARM平台没办法直接从官网下载二进制安装包来安装,好在Golang是支持多平台并且开源的语言,因此可以通过直接在ARM平台上编译源代码来安装。整个过程主要包括编译工具配置、获取Golang源代码、设置Golang编译环境变量、编译、配置Golang行环境变量等步骤。

       æ³¨ï¼šæœ¬æ–‡é€‰ç”¨æ ‘莓派做测试,因为树莓派是基于ARM平台的。

       1、编译工具配置

       æ®è¯´ä¸‹ä¸ªç‰ˆæœ¬çš„golang编译工具要使用golang自己来写,但目前还是使用C编译工具的。因此,首先要配置好C编译工具:

       1.1在Ubuntu或Debian平台上可以使用sudoapt-getinstallgcclibc6-dev命令安装,树莓派的RaspBian系统是基于Debian修改的,所以可以使用这种方法安装。

       1.2在RedHat或CentOS6平台上可以使用sudoyuminstallgcclibc-devel命令安装。

       å®‰è£…完成后可以输入gcc--version命令验证是否成功安装。

       2、获取golang源代码

       2.1直接从官网下载源代码压缩包。

       golang官网提供golang的源代码压缩包,可以直接下载,最新的1.4.1版本源代码链接:/golang/go1.4.1.src.tar.gz

       2.2使用git工具获取。

       golang使用git版本管理工具,也可以使用git获取golang源代码。推荐使用这个方法,因为以后可以随时获取最新的golang源代码。

       2.2.1首先确认ARM平台上已经安装了git工具,可以使用git--version命令确认。一般linux平台都安装了git,没有的话可以自行安装,不同平台的安装方法可以参考:/download/linux

       2.2.2克隆远程golang的git仓库到本地

       åœ¨ç»ˆç«¯cd到你想要安装golang的目录,确保该目录下没有名为go的目录。然后以下命令获取代码仓库:

       gitclone/go

       å¤§é™†åœ°åŒºå¯èƒ½ä¼šèŽ·å–失败,在不翻墙的情况下我试了几次都没成功,原因大家都懂的。好在google已经将golang也托管到github上面,所以也可以通过下面命令获取:

       gitclone/golang/go.git

       è§†ç½‘络情况,下载可能需要不少时间。我2M的带宽花了将近两个小时才下载完,虽然整个项目不过几十兆==

       ä¸‹è½½å®ŒæˆåŽï¼Œå¯ä»¥çœ‹åˆ°ç›®å½•ä¸‹å¤šäº†ä¸€ä¸ªgo目录,里面即为golang的源代码,在终端上执行cdgo命令进入该目录。

       æ‰§è¡Œä¸‹é¢å‘½ä»¤æ£€å‡ºgo1.4.1版本的源代码,因为现在已经有新的代码提交上去了,最新的代码可能不是最稳定的:

       gitcheckoutgo1.4.1

       è‡³æ­¤ï¼Œæœ€æ–°1.4.1发行版的源代码获取完毕

       3、设置golang的编译环境变量

       ä¸»è¦æœ‰GOROOT、GOOS、GOARCH、GOARM四个环境变量需要设置,先解释四个环境变量的意义。

       3.1GOROOT

       ä¸»è¦ä»£è¡¨golang树结构目录的路径,也就是上面git检出的go目录。一般可以不用设置这个环境变量,因为编译的时候默认会以go目录下src子目录中的all.bash脚本运行时的父目录作为GOROOT的值。为了保险起见,可以直接设置为go目录的路径。

       3.2GOOS和GOARCH

       åˆ†åˆ«ä»£è¡¨ç¼–译的目标系统和平台,可选值如下:

       GOOSGOARCH

       darwin

       darwinamd

       dragonfly

       dragonflyamd

       freebsd

       freebsdamd

       freebsdarm

       linux

       linuxamd

       linuxarm

       netbsd

       netbsdamd

       netbsdarm

       openbsd

       openbsdamd

       plan

       plan9amd

       solarisamd

       windows

       windowsamd

       éœ€è¦æ³¨æ„çš„是这两个值代表的是目标系统和平台,而不是编译源代码的系统和平台。树莓派的RaspBian是linux系统,所以这些GOOS设置为linux,GOARCH设置为arm。

       3.3GOARM

       è¡¨ç¤ºä½¿ç”¨çš„浮点运算协处理器版本号,只对arm平台有用,可选值有5,6,7。如果是在目标平台上编译源代码,这个值可以不设置,它会自动判断需要使用哪一个版本。

       æ€»ç»“下来,在树莓派上设置golang的编译环境变量,可编辑$HOME/.bashrc文件,在末尾添加下面内容:

       exportGOROOT=你的go目录路径

       exportGOOS=linux

       exportGOARCH=arm

       ç¼–辑完后保存,执行source~/.bashrc命令让修改生效。

       4、编译源代码

       çŽ¯å¢ƒå˜é‡é…ç½®å®Œæˆè‡ªåŽå°±å¯ä»¥å¼€å§‹ç¼–译源代码。在go目录下的src子目录中,主要有all.bash和make.bash两个脚本(另外还有两个all.bat和make.bat脚本适用于window平台)。编译实际上就是执行其中一个脚本,两者的区别在于all.bash在编译完成后还会执行一些测试套件。如果希望只编译不测试,可以运行make.bash脚本。使用cd命令进入go下src目录,执行./all.bash或者./make.bash命令即可开始编译。由于硬件情况不同,编译耗费的时间不同。在我的B型树莓派编译过程花费了将近半个小时,编译完成后执行的测试套件又花费了差不多一个小时,总共花费了一个半小时左右。

       5、配置golang运行环境变量

       ç¼–译完成后,go目录下会生成bin目录,里面就是go的运行脚本。为了以后使用方法,可以将这个bin路径添加到PATH环境变量中。同样编辑~/.bashrc文件,因为前面设置过GOROOT环境变量指向go目录了,所以只需要在末尾加上

       exportPATH=$PATH:$GOROOT/bin

       ä¿å­˜åŽåŒæ ·æ‰§è¡Œsource~/.bashrc命令让环境变量生效。

       è‡³æ­¤ï¼Œgolang源代码编译安装成功。执行goversion应该就能看到当前golang的版本信息,表示编译安装成功。

       linux下ARM平台编译编写的完成程序如何在windows环境下运行?

       ç›´æŽ¥åœ¨window下运行不了。只能在window下安装虚拟机,再安装linux系统,在虚拟机下的linux里gcc编译你的程序.

       è¯·é—®å­¦ä¹ ARM嵌入式开发应该准备些什么开发工具和要求?

       æ„Ÿè¯·ã€‚

       è¿™ä¸ªé—®é¢˜ç›¸ä¿¡æ˜¯å›°æ‰°æ‰€æœ‰åµŒå…¥å¼åˆå­¦è€…的难题,

       ä¸‹é¢è¯¾å†…容是嵌入式学习必学的:C语言;C++;操作系统;计算机组成原理;linux编程;单片机;arm;硬件编程语言(FPGA);模拟电路数字电路。

       1、cc++语言,这是计算机行业的必修课,必须找扎实实学好,可以安装turboc编译器为开发环境,联系C语言编程;安装vc++6.0学习C++编程。

       2、操作系统,先在电脑上安装一个vmwareworkstation,然后在vmwareworkstation里安装一个linux(redhat企业版)虚拟机。学习一下操作系统的基本原理,熟悉linux环境下的开发环境,然后你就可以照着《自己动手写操作系统》写个操作系统试试。

       3、计算机组成原理,熟悉计算机的基本原理,看看一个计算机的基本组成及软件在里面是如何跑的。

       4、《unix/linux编程实践教程》可以说是linux编程的必修课,很不错的一本书,初学嵌入式的朋友可以看看。

       5、单片机,其实就是一台电脑,像现在的汽车控制、led控制、屏幕亮光程度控制,它都可以实现,自己买块开发板弄一下,你能学到很多的别人学不到的。

       6、arm,现在流行的微机,说白了就是位的单片机,还可以跑操作系统哦,自己想办法移植一个操作系统上去吧

       7、硬件编程语言(FPGA),芯片到底是怎么做成的,学习这门课,你就知道了

       8、模拟电路数字电路,硬件的基础,如果可以的话,学习下protel,自己做个硬件pcb板试试。

       è®¡ç®—机这行都是偏向于实践的课程,所以要注重动手能力,

       å­¦ä¹ åµŒå…¥å¼è¿™åŸºæœ¬è¯¾ç¨‹çš„时候,你可以按照这样的顺序来学习:

       1:C语言、计算机组成原理、模拟电路数字电路

       2:汇编语言、单片机、操作系统、C++

       3:硬件编程语言、arm

       åµŒå…¥å¼å¼€å‘大抵分四个方向,硬件、驱动、内核、应用,如果是希望向嵌入式软件方向发展的话,目前常见的是

       åµŒå…¥å¼Linux+ARM方向,关于这个方向,大概分3个阶段:

       1、嵌入式linux上层应用,包括QT的GUI开发

       2、嵌入式linux系统开发

       3、嵌入式linux驱动开发嵌入式目前主要面向的几个操作系统是,LINUX,WINCE、VxWorks等等Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式。

       è‡ªå­¦çš„话你可以尝试以下路线:

       (1)C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都可以用C语言搞定),因此必须非常熟练的掌握。推荐书籍:谭浩强的很不错,《TheCProgrammingLanguage》这本经典的教材是老外写的,也有中译版本。

       (2)操作系统原理,是必需的,如果你是计算机专业毕业那也就无所谓了,如果是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题搞清楚。

       (3)Linux操作系统就是用C语言编写的,所以你也应该先学习下Linux方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。推荐书籍:《UNIX环境高级编程》(第2版)

       (4)了解ARM的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是起码的要求是能够看懂arm汇编。

       (5)系统移植的时候,就需要你从下层的bootloader开始,然后内核移植,文件系统移植等。而移植这部分对硬件的依赖是非常大的,其配置步骤也相对复杂,也没有太多详细资料。

       (6)驱动开发linux驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容。linux驱动程序设计本质是属于linux内核编程范畴的,因而是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,因为每一部分要详细研究的话足够可以扩展成一本厚书。

       ç»™å¤§å®¶æŠŠä¸€ä¸ªåµŒå…¥å¼å¼€å‘学习大方面的学习框架搭出来了

。

       æœ€åŽå‘¢ç¥å¤§å®¶èƒ½å¤Ÿåœ¨å­¦ä¹ çš„路上马到成功。

出租车计价器

       ä¸€ã€é¢˜ç›®ï¼šA题 设计并制作一个用于出租车的计费系统。

       äºŒã€è®¾è®¡è¦æ±‚

       1、基本要求:

       ï¼ˆ1)制作一个模拟车轮用直流电动机(或步进电机)驱动,现场模拟以下运行情况的收费情况:

       u 假设车轮的周长为一米。

       u 起步价为三公里五元,白天每公里三元,晚上每公里四元。

       u 运行五公里之后,停三分钟,再运行五公里之后乘客下车,由于演示的时间的需要,途中停车超过一分钟开始收费,超过的时间每分钟一元。

       ï¼ˆ2)能够手动修改单价。

       ï¼ˆ3)具有数据的复位功能。

       ï¼ˆ5)数据输出

       u 单价输出 至少2位

       u 路程输出 至少2位

       u 总金额输出 至少3位

       2、发挥部分:

       ï¼ˆ1)能够在掉电的情况下存储单价等数据。

       ï¼ˆ2)能够显示、调节当前的系统时间,并根据当前的系统时间进行计费(6时至时为白天,时至第二天6时为晚上)。

       ï¼ˆ3)有语音报价功能。

       1.2 方案比较与论证

       1.2.1控制器模块

       æ–¹æ¡ˆä¸€ï¼šé‡‡ç”¨å¯ç¼–程逻辑器件CPLD 作为控制器。CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高。且从使用及经济的角度考虑我们放弃了此方案。

       æ–¹æ¡ˆäºŒï¼šé‡‡ç”¨å‡Œé˜³å…¬å¸çš„位单片机,它是位控制器,具有体积小、驱动能力高、集成度高、易扩展、可靠性高、功耗低、结构简单、中断处理能力强等特点。处理速度高,尤其适用于语音处理和识别等领域,采用此单片机能够很方便的实现发挥部分的语音报价功能,但此单片机较难买到,而且价格稍贵,故放弃了此方案。

       æ–¹æ¡ˆä¸‰ï¼šé‡‡ç”¨Atmel公司的ATS单片机作为主控制器,此单片机是内核的CMOS 8位单片机,片内含8k空间的可反复擦些次的Flash读写存储器,具有 bytes的随机存取数据存储器(RAM),个IO口,你知道厂房装修合同样板。2个位可编程定时计数器。其价格低廉,非常适合用于小系统的开发,开采用ISP在线编程,程序的下载和修改也很方便。题目所要求的系统对控制器的要求不高,我们综合多方面考虑选用了此方案。

       1.2.2车轮转速探测模块

       æ–¹æ¡ˆä¸€ï¼šç”¨å…‰æ•ç”µé˜»ç»„成光敏探测器。光敏电阻的阻值可以跟随周围环境光线的变化而变化。当光线照射到车轮码盘的白色部分时,光线发射强烈,光线照射到车轮码盘的黑色部分时,光线发射较弱。因此光敏电阻在白色部分和黑色部分上方时,阻值会发生明显的变化。将阻值的变化值经过比较器就可以输出高低电平。此方案易受外界光线的干扰。

       æ–¹æ¡ˆäºŒï¼šé‡‡ç”¨éœå°”传感器最为探测器件,霍尔传感器的两部分分别安装在车轮和固定电路板上,根据车轮转动时将变化的磁场强度转换为脉冲电信号,此方案能够使对车轮计数精确,工作稳定,但成本较高。

       æ–¹æ¡ˆä¸‰ï¼šé‡‡ç”¨çº¢å¤–对管,当红外发射管发射出的红外线照到码盘的白色部分和黑色部分时,其反射的红外线强度不同,通过红外接收管接收后经电压比较器LM比较后即可输出高低电平。此方案成本低,容易实现,且灵敏度较高。

       æ ¹æ®æœ¬ç³»ç»Ÿçš„设计要求,对车轮转速的探测受外界的干扰较小,而采用采用红外对管工作电路简单,调试方便,所以我们选择此方案。

       1.2.3时钟控制模块

       æ–¹æ¡ˆä¸€ï¼šé‡‡ç”¨.MHz的晶振产生震荡后经多个LS进行次2分频,产生精确的秒信号,自行搭建时间电路。此方案具有较好的原创性,但电路搭建起来较为复杂,工作不够稳定,也不方便调节。

       æ–¹æ¡ˆäºŒï¼šç›´æŽ¥é‡‡ç”¨å•ç‰‡æœºå†…部的时钟信号。这样能够大大简化硬件的设计,但断电后不能工作,而且大量占用单片机有限的内存资源。

       æ–¹æ¡ˆä¸‰ï¼šé‡‡ç”¨DS专用时钟芯片。DS是功能强大的实时时钟芯片,内置锂电池,内置晶振。提供二进制数和BCD码两种数据表示方式。可切换小时制和小时制时间表示。具有闹钟功能。可编程方波输出。提供字节非易失存储空间,用于断电保存数据。

       ç”±äºŽæœ¬ç³»ç»Ÿçš„很多功能都是基于时间的基础上实现的,因此对时钟的要求较高,故我们选择方案三。

       1.2.4显示模块

       æ–¹æ¡ˆä¸€ï¼šç”¨æ•°ç ç®¡è¿›è¡Œæ˜¾ç¤ºã€‚数码管由于显示速度快,使用简单,显示效果简洁明了而得到了广泛应用,但显示的内容仅仅局限于数字,人机界面不够友好因此我们放弃了此方案。

       æ–¹æ¡ˆäºŒï¼šç”¨LCD液晶进行显示。LCD由于其显示清晰,显示内容丰富、清晰,显示信息量大,使用方便,显示快速而得到了广泛的应用。由于本此系统需要显示的内容较多,为达到较好的人机交互界面,我们选择了此方案。

       1.3最终选择方案

       u 采用ATS单片机作为主控制器。

       u 采用红外对管+LM作为车轮转速探测模块。

       u 采用DS作为实时时钟控制芯片。

       u 采用LCD液晶作为显示模块。

       u 采用普通的直流电机和自制的车轮及码盘作为模拟车轮。

       1.4系统结构图

       æŒ‰é”®ï¼š

       çº¢å¤–感应模块

       MCU

       ATS

       DS系统时间,断电保存数据

       LCD液晶显示

       æ¨¡æ‹Ÿè½¦è½®

       å›¾1 系统结构框架

       ç¬¬äºŒç« :各部分电路原理与设计

       2.1单片机主控模块的设计

       Atmel公司的ATS是内核的单片机。不用烧写器而只用串口或者并口就可以往单片机中下载程序。

       æˆ‘们所设计的单片机最小系统板采用的双龙公司的并口下载标准,且在板上留有下载线插座,这样可以非常方便的实现通过PC机的并口往单片机中下载程序。同时将稳压电源部分也附在其上,经过稳压后的+5V电源为除电机外的其他系统模块提供工作电源。

       å•ç‰‡æœºæŽ§åˆ¶æ¨¡å—的示意图如图9所示:

       å›¾2 单片机主控模块

       å•ç‰‡æœºçš„I/O口分配如下:

       P0,P2.5~P2.7 LCD模块

       P1,P2.0~P2.3,P3.3 实时时钟模块

       P3.0~P3.1,P3.5~P3.7 按键开关

       P3.2 红外探测模块

       2.2红外探测模块的设计

       æˆ‘们通过将红外接收二极管的不同压降与基准电压送入电压比较器LM进行比较,输出对应的高低电平信号,送到单片机进行处理。其电路原理图如下:

       å›¾3 红外探测模块

       åœ¨å›¾3中,可调电阻RW可以调节比较器的门限电压,经示波器观察,输出波形相当规则,可以直接够单片机查询使用。

       ç”±äºŽæˆ‘们的码盘采用二分法进行设计,黑白两种颜色各占原周的一半,因此单片机每接收到一个高电平信号则模拟车轮转了一圈,通过计算每秒钟单片机接收到的高电平信号个数即可方便的计算出车轮的速度和所走的里程。

       2.3模拟车轮的设计

       å°è½¦çš„速度和里程的测量是通过光电对管检测码盘实现的。我们采用普通的直流电机和玩具车的车轮,自制码盘,做成模拟车轮,供测量用。

       è€ƒè™‘到电机运行时对电压的干扰,电机的电源直接由输入的未经过稳压的电源提供,试用期解除劳动合同。并设立独立的开关,有人工控制,这样更符合实际的工作情况。

       ä¸ºé˜²æ­¢å…‰ç”µç®¡äº§ç”Ÿè¯¯åŠ¨ä½œï¼Œæˆ‘们将光电码盘分为2份黑白相间的圆盘,每份各占圆周的一半,如图4:

       å›¾4 模拟车轮码盘

       å°†å…¶ç´§è´´åœ¨è½¦è½®çš„内侧。在封装盒右侧打一个方孔,红外对管通过方孔对光电码盘进行检测就可以得到车轮转过的圈数。从而计算出小车前进的路程。

       æœ¬ç³»ç»Ÿå‡è®¾è½¦è½®çš„周长为1米,假设单片机每秒检测到黑白信号的变化为n,共走了k秒则小车走过的路程为S=nk米。

       2.4实时时钟控制模块的设计

       æˆ‘们采用的DS功能强大,内置锂电池,内置晶振,可以作为实时电子钟,为整个系统提供时钟,很好地解决了题目发挥部分“能够显示、调节当前的系统时间,并根据当前的系统时间进行计费(6时至时为白天,时至第二天6时为晚上)”的要求。同时利用其闹钟功能对探测信号进行采样,精确的计算出车速。由于芯片还提供字节非易失存储空间,因此我们将题目要求的各种价格的设置方便的保存在里面,达到断电保存数据的功能。

       å›¾5 时钟模块电路图

       2.5人机交互界面的设计

       ä¸ºä½¿ç³»ç»Ÿæœ‰æ›´è‰¯å¥½çš„人机交互界面,我们将LCD液晶显示模块,操作按键,系统复位开关和车轮控制开关集中于封装盒的面板上,方便用户操作,如下图:

       å›¾6 人机交互界面

       2.6系统总体电路图

       å›¾7 系统总电路图

       å›¾8 系统装箱后的内部实物图

       ç¬¬ä¸‰ç« ï¼šç³»ç»Ÿç¨‹åºè®¾è®¡

       3.1系统程序所实现的功能

       u 实时显示总金额,总里程,车速,已走过时间,系统时间。

       u 可在线修改系统时间。

       u 可修改起步价及起步距离。

       u 可修改每超过一公里加收费用。

       u 可修改途中停车超过时间开始收费的时间及单价。

       3.2程序任务分配

       è¡¨1 程序任务分配

       å¤–部中断0(来自车轮)

       å¤–部中断1(来自时钟)

       ä¸»å‡½æ•°

       æ›´æ–°è·¯ç¨‹ï¼ŒåŠ æ€»ä»·ï¼Œå¤ä½è®¡æ—¶å™¨ï¼Œå¦‚果显示屏使用权在INT0,就更新显示。

       æ˜¾ç¤ºå±ä½¿ç”¨æƒç”¨screen变量表示。

       è®¡ç®—速度,计算行车时间,计时并在停车超时后加钱。根据显示屏使用权判断是否更新显示。

       æ ¹æ®real_time变量的值决定是否把系统时间更新到屏幕上。

       è¯»å–按键。决定控制逻辑。

       3.3主程序流程图

       å¼€å§‹

       åˆå§‹åŒ–LCD、实时时钟

       ä»Žå­˜å‚¨å™¨è¯»å‡ºå•ä»·ç­‰æ•°æ®

       æ˜¾ç¤ºlogo

       ä»»æ„é”®

       ç©ºé—²çŠ¶æ€ï¼Œæ˜¾ç¤ºç³»ç»Ÿæ—¶é—´

       æœ‰é”®æŒ‰ä¸‹

       ç©ºé—²çŠ¶æ€

       è®¡è´¹çŠ¶æ€

       è®¾ç½®é”®?

       N

       Y

       è®¾ç½®

       ç­‰å¾…按键

       æ˜¯2键?

       N

       Y

       åˆå§‹åŒ–计费屏幕,进入计费状态

       æ˜¯3键

       Y

       æŸ¥çœ‹ç³»ç»Ÿæ—¶é—´ï¼Œå»¶æ—¶4秒

       N

       æ˜¯4键?

       Y

       åœæ­¢è®¡è´¹ï¼Œè¿›å…¥ç©ºé—²çŠ¶æ€

       N

       æŒ‰ä¸‹2键复位

       3.4各数据在中存储地址

       è¡¨2 各数据在中存储地址

       åœ°å€

       å˜é‡

       åŠŸèƒ½

       0x0e

       d

       //起步价 d 公里 p 角

       0x0f

       p

       0x

       day_price

       //白天每公里价格,单位:角

       0x

       night_price

       //夜晚每公里价格,单位:角

       0x

       x

       //中途停车超过y分钟之后按x角每分钟计价

       0x

       y

       3.5中断服务0程序流程图

       è§¦å‘中断

       è·¯ç¨‹åŠ ä¸€ç±³

       å…è®¸ä½¿ç”¨æ˜¾ç¤ºå±?

       è®¡æ—¶å™¨å¤ä½

       è·¯ç¨‹ï¼ï¼èµ·æ­¥è·¯ç¨‹ï¼Ÿ

       è·¯ç¨‹>起步路程?

       Y

       N

       Y

       æ›´æ–°è·¯ç¨‹æ˜¾ç¤º

       å‘总金额加上公里价

       N

       æ›´æ–°æ€»é‡‘额显示

       Y

       N

       Y

       å…¬é‡Œè®¡ç¨‹å™¨å¤ä½

       ä¸­æ–­2服务程序的timer_state和timer_count变量

       counter_变量

       å…¬é‡Œè®¡ç¨‹å™¨åŠ 1

       å…¬é‡Œè®¡ç¨‹å™¨ï¼ï¼?

       ç»“束

       N

       Y

       å‘总金额加上公里价

       å…è®¸ä½¿ç”¨æ˜¾ç¤ºå±?

       æ›´æ–°æ€»é‡‘额显示

       Y

       N

       å…¬é‡Œè®¡ç¨‹å™¨å¤ä½

       0号中断服务程序:

       è½¦è½®è½¬åŠ¨ä¸€åœˆè§¦å‘一次

       3.6 中断服务2程序流程图

       è§¦å‘中断

       ç³»ç»Ÿåœ¨è®¡è´¹çŠ¶æ€ï¼Ÿ

       Y

       N

       éœ€è¦åŒæ­¥æ—¶é—´ï¼Ÿ

       Y

       N

       ç»“束

       é€Ÿåº¦=现在的路程—一秒之前的路程

       è¡Œè½¦æ—¶é—´åŠ ä¸€ç§’

       è®¡æ—¶å™¨åŠ ä¸€ç§’

       è®¡æ—¶ç­‰äºŽæœ€å¤§åœè½¦æ—¶é—´ï¼Ÿ

       N

       æ€»é‡‘额加每分钟价

       è¿›å…¥åœè½¦è¶…时状态

       Y

       åœè½¦è¶…时状态?

       Y

       æ¯åˆ†é’ŸåŠ é’±

       N

       å°†ç³»ç»Ÿæ—¶é—´å’Œæ—¥æœŸåŒæ­¥åˆ°å±å¹•ä¸Š

       2号中断服务程序:

       æ¯ç§’钟触发一次

       ç¬¬å››ç« :系统调试结果与分析

       4.1调试方法与仪器

       è¡¨3 测试仪器设备清单

       ä»ªå™¨åç§°

       åž‹å·

       ç”¨é€”

       æ•°é‡

       PC机

       è”想

       è°ƒè¯•åŠä¸‹è½½ç¨‹åº

       1

       æ•°å­—万用表

       UNI-TA

       æµ‹é‡å„电路工作情况

       1

       ç§’表

       è®°å½•æ—¶é—´

       1

       ç›´æµç¨³åŽ‹ç”µæº

       ALKIMIA

       æä¾›ç”µæº

       1

       4.2调试步骤与测试数据

       4.2.1系统时间与秒表实际时间测量

       å¼€æœºåŽæŒ‰â€œå¼€å§‹â€é”®è¿›å…¥è®¡æ—¶å·¥ä½œçŠ¶æ€ï¼ŒåŒæ—¶å¯åŠ¨ç§’表进行及时对比,分别对工作时间为1分钟,2分钟,3分钟,4分钟,5分钟进行测量比较,结果如表2

       è¡¨4 系统时间测试比较

       æµ‹è¯•æ—¶é—´

       ç³»ç»Ÿæ˜¾ç¤ºæ—¶é—´

       ç§’表测量时间

       s

       s

       .s

       s

       s

       .s

       s

       s

       .s

       s

       s

       .s

       s

       s

       .s

       4.2..2车轮转速测试

       æœ¬ç³»ç»Ÿçš„设计对探测信号的下降沿进行触发,因此当红外对管探测到的码盘从白色转为黑色时,单片机中断触发,计数器加一。

       å¯åŠ¨è®¡è´¹ç³»ç»Ÿï¼ŒåŒæ—¶æ‰‹å·¥è½¬åŠ¨è½¦è½®ä¸€å‘¨ï¼Œæ˜¾ç¤ºå±ä¸Šè·¯ç¨‹æ˜¾ç¤º1m,在转动车轮几圈,LCD的显示数值均与实际相符。

       4.2.3计费系统测试

       è¡¨5 不同情况下的计费结果测试

       è®¡è´¹æ—¶é—´æ®µ

       è¡Œé©¶é‡Œç¨‹

       è¡Œé©¶æ—¶é—´

       ä¸­é€”停车时间

       è®¡è´¹ä»·æ ¼

       ç™½å¤©

       m

       s

       0

       5.0元

       ç™½å¤©

       m

       s

       0

       .0元

       æ™šä¸Š

       m

       s

       0

       .0元

       æ™šä¸Š

       m

       s

       s

       .0元

       4.2.4数据设定及断电储存功能

       åœ¨å¾…机状态下按“设置”键,分别修改起步价4km内8元,白天每公里5元,晚上每公里7元,修改系统时间,然后保存,关机,断开电源,等待5分钟之后重新开机,发现数据为修改后的数据,即数据的设定及断电储存功能有效。

       4.3测试结果分析

       é€šè¿‡è°ƒè¯•å’Œç³»ç»Ÿæµ‹è¯•ï¼Œå‘现系统能很好地实现预期的目的,实现了除语音功能外的其他所有功能,工作性能稳定,计费精确。系统时间实时运行,准确,里程的显示误差在1m以内。很好的完成了赛题的要求。

       ç¬¬äº”章:系统性能总结及特点

       5.1 实现基本要求功能

       è¡¨4 基本功能的实现情况

       åŸºæœ¬è¦æ±‚功能

       åŠŸèƒ½å®žçŽ°æƒ…况

       åŸºæœ¬è¦æ±‚第(1)项

       å®žçŽ°

       åŸºæœ¬è¦æ±‚第(2)项

       å®žçŽ°

       åŸºæœ¬è¦æ±‚第(3)项

       å®žçŽ°

       åŸºæœ¬è¦æ±‚第(4)项

       å®žçŽ°

       åŸºæœ¬è¦æ±‚第(5)项

       å®žçŽ°

       5.2 实现发挥部分功能

       è¡¨5 发挥功能的实现情况

       å‘挥要求功能

       åŠŸèƒ½å®žçŽ°æƒ…况

       å‘挥要求第(1)项

       å®žçŽ°

       å‘挥要求第(2)项

       å®žçŽ°

       å‘挥要求第(3)项

       æœªå®žçŽ°

       5.3 增加的其他功能

       u 与计费系统相关的所有参数用户均可修改并储存。

       u 兼有万年历和数字电子钟功能。

       u 一体化人机交互界面控制面板,硬件系装箱,提高机械强度,安全性能和美观度。

       ç¬¬å…­ç« ï¼šé™„录

       é™„录一 系统程序源代码

       /

copyright © 2016 powered by 皮皮网   sitemap