ARM+Linux 嵌入式开发环境搭建

这些都是自个从一月份开始学习ARM+Linux中遇到的问题做的笔记,我觉得很有用,所以分享出来!

因为没有老师教,自己琢磨遇到的问题很多,欢迎交流!

--------------------------------------------------------------------------------------------------

零点漂移队:封尘浪

---------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------

0.平台搭建

--------------------------------------------------------------------------------------

下载 VMware11

下载 Ubutun 14

安装

解决 gedit 中文乱码

终端输入:

gsettings set org.gnome.gedit.preferences.encodings auto-detected "[‘GB18030‘, ‘GB2312‘, ‘GBK‘, ‘UTF-8‘, ‘BIG5‘, ‘CURRENT‘, ‘UTF-16‘]"

--------------------------------------------------------------------------------------

1.dnw工具安装

--------------------------------------------------------------------------------------

sudo apt-get install libusb-dev

dnw.c

#include <stdio.h>

#include <usb.h>

#include <errno.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <unistd.h>

#define TQ2440_SECBULK_IDVENDOR  0x5345

#define TQ2440_SECBULK_IDPRODUCT 0x1234

struct usb_dev_handle * open_port()

{

struct usb_bus *busses, *bus;

usb_init();

usb_find_busses();

usb_find_devices();

busses = usb_get_busses();

for(bus=busses;bus;bus=bus->next)

{

struct usb_device *dev;

for(dev=bus->devices;dev;dev=dev->next)

{

if( TQ2440_SECBULK_IDVENDOR==dev->descriptor.idVendor

&& TQ2440_SECBULK_IDPRODUCT==dev->descriptor.idProduct)

{

printf("Target usb device found!\n");

struct usb_dev_handle *hdev = usb_open(dev);

if(!hdev)

{

perror("Cannot open device");

}

else

{

if(0!=usb_claim_interface(hdev, 0))

{

perror("Cannot claim interface");

usb_close(hdev);

hdev = NULL;

}

}

return hdev;

}

}

}

printf("Target usb device not found!\n");

return NULL;

}

void usage()

{

printf("Usage: dnw <file>\n\n");

}

unsigned char* prepare_write_buf(char *filename, unsigned int *len)

{

unsigned char *write_buf = NULL;

struct stat fs;

int fd = open(filename, O_RDONLY);

if(-1==fd)

{

perror("Cannot open file");

return NULL;

}

if(-1==fstat(fd, &fs))

{

perror("Cannot get file size");

goto error;

}

write_buf = (unsigned char*)malloc(fs.st_size+10);

if(NULL==write_buf)

{

perror("malloc failed");

goto error;

}

if(fs.st_size != read(fd, write_buf+8, fs.st_size))

{

perror("Reading file failed");

goto error;

}

printf("Filename : %s\n", filename);

printf("Filesize : %d bytes\n", fs.st_size);

*((u_int32_t*)write_buf) = 0x30008000;   //download address

*((u_int32_t*)write_buf+1) = fs.st_size + 10; //download size;

*len = fs.st_size + 10;

return write_buf;

error:

if(fd!=-1) close(fd);

if(NULL!=write_buf) free(write_buf);

fs.st_size = 0;

return NULL;

}

int main(int argc, char *argv[])

{

if(2!=argc)

{

usage();

return 1;

}

struct usb_dev_handle *hdev = open_port();

if(!hdev)

{

return 1;

}

unsigned int len = 0;

unsigned char* write_buf = prepare_write_buf(argv[1], &len);

if(NULL==write_buf) return 1;

unsigned int remain = len;

unsigned int towrite;

printf("Writing data ...\n");

while(remain)

{

towrite = remain>512 ? 512 : remain;

if(towrite != usb_bulk_write(hdev, 0x03, write_buf+(len-remain), towrite, 3000))

{

perror("usb_bulk_write failed");

break;

}

remain-=towrite;

printf("\r%d%\t %d bytes ", (len-remain)*100/len, len-remain);

fflush(stdout);

}

if(0==remain) printf("Done!\n");

return 0;

}

5编译: gcc -o dnw dnw.c -lusb

6.将文件copy到/usr/local/bin目录

# sudo cp dnw /usr/local/bin

----------------------------------------------------------------------------------------------

2. ARM-linux-gcc 安装

----------------------------------------------------------------------------------------------

sudo apt-get install gcc-arm-linux-gnueabi

arm-linux-gnueabi-gcc -v

记住:同时将 Makefile中修改为:

arm-linux-gnueabi-gcc -g -c -o led_on.o led_on.S

arm-linux-gnueabi-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf

arm-linux-gnueabi-objcopy -O binary -S led_on_elf led_on.bin

----------------------------------------------------------------------------------------------

3. linux 串口助手 安装

----------------------------------------------------------------------------------------------

sudo apt-get minicom

CTRL+A+Z

设置串口无流控: ttyUSB0

--------------------------------------------------------------------------------

4. minicom 发送文件

--------------------------------------------------------------------------------

Ctrl+A  S 选择要发送的文件

-----------------------------------------------------------------------------------

5. make menuconfig *** [scripts/kconfig/dochecklxdialog] 编译内核

------------------------------------------------------------------------------------

sudo apt-get install ncurses-dev

-----------------------------------------------------------------------

6. undefined reference to `__stack_chk_fail‘

undefined reference to `__stack_chk_guard‘

-----------------------------------------------------------------------

CFLAGS后面加上了-fno-stack-protector

-----------------------------------------------------------------------

7. GUI开发

下载 qt-creator-opensource-linux-x86_64-3.4.0

下载 qtcreator

-----------------------------------------------------------------------

------------------------------------------------------------------------

8.U-boot 移植   Linux Kernel 移植

-----------------------------------------------------------------------

在对应目录写驱动程序 xx_dev.c (gpio_dev.c)

然后写应用程序      xx.c (gpio.c)

同一目录下:

Kconfig

在内核源代码中添加对内核的支持

config TQ2440_GPIO_TEST

tristate "EmbedSky SKY2440/TQ2440 Board GPIO Test(control LED)"

depends on ARCH_S3C2440

default y if ARCH_S3C2440

help

GPIO control for EmbedSky SKY2440/TQ2440 Board.

Makefile: 内核目录修改为开发板的目录

配置编译该驱动

obj-$(CONFIG_TQ2440_GPIO_TEST)  += dev_gpio.o

配置内核:make menuconfig

将其选择为 M 模块

编译内核 make zImage

编译模块 make SUBDIR = drivers/char/ modules

在对应目录找到 xx.ko 将其复制到开发板

insmod xx.ko

rmmod  xx.ko

dmesg

--------------------------------------------------------------------------------

时间: 2024-10-11 13:15:55

ARM+Linux 嵌入式开发环境搭建的相关文章

转:Qt 嵌入式开发环境搭建

地址: http://www.cnblogs.com/lishixian/articles/3013897.html         作者:lsx_007 这里主要是记录了自己在搭建嵌入式开发环境时阅读的一些有价值的参考文档,文档主要来自于网络,由于是从文库中下载,所以也不知道 文档的出在哪?因为个人觉得总结的比较好,我暂且拿过来记录下,当然在此基础上也会加上我自己的理解!这篇文章主要是以问答的形式来组织. QT嵌入式开发环境是本文所要介绍的内容,我们先看看Qt的各个版本简介: 1.什么是QT

s3c6410 Linux 驱动开发环境搭建

s3c6410 Linux 驱动开发环境搭建 -- 既然你是做Linux开发的,你还用虚拟机? 非常多人都在win下做开发,于是SD_writer.exe之类的烧写工具"大行其道",多是用虚拟机Linux. 全然转到Linux下学习開始蛮不爽的,开发板制作商送的教程都是些讲Win-CE的东东,感觉实质性的东西没什么.对于全然用Linux做开发的技术解说非常少,连烧写SD卡都用的win以下的程序.后来找了些资料,整理在这里,希望留给有心人.共同营造一个更好的共同学习的环境. 当别人遇到困

Linux Android 开发环境搭建

由于Android本身就是linux,为了避免各种不必要的坑,所以在linux下开发Android.当然不熟悉 linux 的,选择 windows 开发也是一样,没有任何问题,个人习惯就好.说一下我的开发环境, ubuntu 14.04(这个是最新的STL),  JDK 1.7.0. 首先是 jdk 的安装, 这个在网上有很多的 blog 可以参看,就不累术了,选择对应版本的就行,记住配置好环境变量.然后是 Android SDK 的安装.在官网上推荐的是新手选择安装 ADT Bundle 版

linux嵌入式&amp;开发环境的搭建&amp;VMware的安装与使用

学习linux嵌入式开发,顾名思义,需要在linux操作系统下进行开发,所以我们需要先有一个linux操作系统.这里由于我们是在 Windows 下进行开发的,如果想在不安装双系统的前提下进行linux嵌入式开发,这里我们就要用到虚拟机VMware软件了,使用VMware的目的就是可以在该软件下构建出多个操作系统.那么VMware又是如何安装和使用的呢? 1.VMware的安装 下载 VMware-workstation-full-11.1.2.61471.1437365244 软件,这里以WM

Linux PC开发环境搭建建议

搭建Linux PC开发环境 很早之前整理的在Linux(ubuntu)系统下搭建 PC开发环境的工具的推荐和简单说明,尽管现在有些已经不再使用,但还是要备份一下,作为以后的参考: package: download from: 软件集成开发环境(代码编辑.浏览.编译.调试) Emacs http://www.gnu.org/software/emacs/ Source-Navigator 5.2b2 http://sourceforge.net/projects/sourcenav 代码索引工

linux android开发环境搭建

android开发环境搭建的一些有用链接:1.sdk manager的国内服务器http://www.cnblogs.com/huangjacky/p/4077982.html2.常见问题的解决http://www.77exception.com/mobiledevelop/11630.html3.创建一个新的项目http://www.phperz.com/article/14/1215/41141.html4.在sdk中下载Android Support Libraryhttp://zhida

Linux交叉开发环境搭建 —— 效率之源

楼主今天终于把所有Linux开发环境需要的软件下载完毕了.虽然以前也是搭建过的,时间久了又折腾了一晚上. 交叉环境: Windows.Linux文件共享 SecureCRT 连接虚拟机终端 工具: VirtualBox ubuntu-16.04-desktop-amd64.iso(ubuntu官网下载) SecureCRT Source Insight 虚拟机搭建: 检查bios虚拟技术功能开启 新建虚拟机,选择创建虚拟硬盘,其余均默认 点击新建虚拟机设置->存储->选中没有光盘->点击

Linux应用开发环境搭建

因为笔者是一名大学生,对Linux内核开发方向非常感兴趣,可是实在是能(ji)力(shu)有(cha)限(jin),仅仅能从Linux应用开发開始,由浅入深,逐步进步,登上人生高峰,因此,昨天搭建了开发环境,安装了一些开发工具.(本来是全部工具都採取由编码编译来进行配置的,不料当中于上的问题实在太多,当时也没有做问题记录和解决方式的记录,于是就发了此文,採用一种比較便捷的方式,希望对和我一样的新手有些帮助) 以下进入正题: 一.安装 1.安装gcc/g++/gdb/make 等基本编程工具 $s

Docker for Windows安装与Linux+PHP开发环境搭建(一)

Docker是什么? 简单得来说,Docker是一个由GO语言写的程序运行的"容器"(Linux containers, LXCs); 目前云服务的基石是操作系统级别的隔离,在同一台物理服务器上虚拟出多个主机.Docker则实现了一种应用程序级别的隔离; 它改变我们基本的开发.操作单元,由直接操作虚拟主机(VM),转换到操作程序运行的"容器"上来. Docker的好处 Docker的优点:运行快.部署敏捷.灵活.轻量.开源免费. Boot2Docker是一个专为Do