【嵌入式系统】实验一、熟悉 Linux 开发环境

虚拟机没有vmnet0

在这里插入图片描述
在这里插入图片描述
首先点击 虚拟机->电源->关机 关闭虚拟机。 然后
点击 编辑->虚拟网络编辑器。
最后选择桥接模式的虚拟网卡 VMnet0,将该网卡桥接到以太网控制器。
确定。
在这里插入图片描述
添加网卡
首先点击 编辑虚拟机设置。
然后点击 添加->选择网络适配器->改为桥接模式。确定。
在这里插入图片描述
在这里插入图片描述

设置 IP 地址
首先 打开虚拟机->打开 terminal->输入 ifconfig 命令,可得添加的网卡名为
eth4。
在这里插入图片描述
然后 su root, 输入密码,再输入:
sudo ifconfig ens38 192.168.1.94
配置 eth4 的 ip 地址,再次输入 ifconfig 命令可查看是否配置成功
在这里插入图片描述
配置开发板的 ip 地址
可通过开发板上的终端查看 ip 地址是否已配置。 开发板默认已配置
为 192.168.1.230。若未配置,需配置为 192.168.1.230。

修改开发板 root 的密码
点击开发板终端程序 -> 输入 passwd root 命令 -> 输入两次密码 12345,从
主机连接到开发板。

开发板连接电源,通过网线与电脑连接,打开开发板电源。

SSH 是 Secure Shell 的缩写,专为远程登录会话和其他网络服务提供安全性的协议。通过 ssh 可在其他主机上远程执行本机的命令。
输入命令 ssh root@192.168.1.230
提示是否继续(yes/no) 输入 yes -> 输入 root (开发板)的密码 1234
在这里插入图片描述
自行百度ubuntu安装ssh
在这里插入图片描述
在这里插入图片描述
此时,已经可以访问开发板的文件了。
在这里插入图片描述

通过 sftp 从主机上传或下载文件。
在这里插入图片描述

解决办法如下 输入 rm -rf ~/.ssh/known_hosts   然后重新连接即可。

rm -rf ~/.ssh/known_hosts

sftp hangover@192.168.1.94
(虚拟机)主机名@之前配置的ip地址

lls: 显示本地主机的目录列表 cd:进入远程主机的目录
lcd: 进入本地主机的目录 pwd:显示远程主机的当前位置
lpwd:显示本地主机的当前位置
get:从本地主机上传文件到远程主机
put:从远程主机下载文件到本地主机
quit:退出 sftp
exit:退出远程连接

在这里插入图片描述

Ubuntu 18.04安装arm-linux-gcc交叉编译器(超简单,附安装包下载地址)

Makefile

CC=arm-linux-gcc
EXEC=hello
OBJS=hello.o
CFLAGS+=
LDFLAGS+=

all:$(EXEC)
$(EXEC):$(OBJS)
        $(CC) $(lLDFLAGS) -o $@ $(OBJS)

clean:
        -rm -f $(EXEC) *.elf *.gdb *.o

CC 指明编译器
EXEC 表示编译后生成的执行文件名称
OBJS 目标文件列表
CFLAGS 编译参数
LDFLAGS 链接参数
All: 编译主入口
clean :清除编译结果

实验二:
Linux下生产者消费者问题(使用互斥锁和条件变量)

生产者消费者问题 C++实现

在任何一个线程中调用exit函数都会导致进程结束。进程一旦结束,那么进程中的所有线程都将结束。

实验三
mini2440之ADC驱动分析

实验四

#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<sys/ioctl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<errno.h>
#include<unistd.h>
int main(int argc,char **argv)
{
    int fd;
    int on;
    int led_no;
    
    if(argc!=3||sscanf(argv[1],"%d",&led_no)!=1||sscanf(argv[2],"%d",&on)!=1||led_no<0||led_no>3||on<0||on>1)
    {
        fprintf(stderr,"Usage:leds led_no 0|1\n");
        exit(1);
    }
    
    fd=open("/dev/led0",0);
    
    if(fd<0)
    {
        fd=open("/dev/leds",0);
    }
    
    if(fd<0)
    {
        perror("open leds device:");
        exit(1);
    }
    
    ioctl(fd,on,led_no);
    close(fd);
    
    return 0;
}

CC=arm-linux-gcc
EXEC=led_test1
OBJS=led_test.o
all:$(EXEC)
$(EXEC):$(OBJS)
	$(CC) -o $@ $(OBJS)
clean:
	-rm -f $(EXEC) *.elf *.gdb *.o

===================================================

#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<sys/ioctl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<errno.h>
#include<unistd.h>
 #include "sys/time.h"
int main()
{
int fd;
int on = 1;
int led;
fd=open("/dev/led0",0);
if(fd<0)
{
fd=open("/dev/leds",0);
}
if(fd<0)
{
perror("open leds device:");
exit(1);
}
printf("leds test show. press ctrl+c to exit \n");
while(1)
{
    for(led=0;led<4;led++)
    {
        ioctl(fd, on, led);
            usleep(50000);
    }
    on=!on;
}
close(fd);
return 0;
}

CC=arm-linux-gcc
EXEC=led_while_test
OBJS=led_while_test.o
all:$(EXEC)
$(EXEC):$(OBJS)
	$(CC) -o $@ $(OBJS)
clean:
	-rm -f $(EXEC) *.elf *.gdb *.o

【重温经典】mini2440驱动程序之LED驱动(基于Linux-2.6.32.2)

在这里插入图片描述

source /etc/profile

后面的配置特别麻烦,还是直接放弃吧。我也没成功

ubuntu如何跑arm程序

sudo apt-get install qemu
sudo apt install qemu-user
qemu-arm hello

运行,报错/lib/ld-linux.so.3: No such file or directory

解决

find / -name "ld-linux.so.3"



在这里插入图片描述

cp ld-2.9.so /usr/local/arm32/arm-linux-gcc-4.4.3/lib
ln -s ld-2.9.so ld-linux.so.3

在这里插入图片描述

(linux)ubuntu配置arm-linux-gcc交叉编译器32位,64位

64位linux(ubuntu)使用32位的软件所需的环境

apt-get update
apt-get install libncurses5-dev
apt-get install lib32z1​
apt-get install libc6-dev-i386
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值