PC平台(x86)Linux系统 与 嵌入式(ARM)Linux系统的准备以及远程操作
一:assert断言:
断言是程序调试很重要的手段,ASSERT( f )在Debug模式下,每次运行到这里后会计算括号中的表达式,如果表达式为0,则中断执行,弹出一个警告框,用户可选择“继续”,“重试”,“忽略”在Release模式下,这句语句不会被编译进代码。ASSERT一般用于程序内部确认参数的正确性,即调用内部函数的时候,要由调用者保证参数的正确,而被调用函数内部,就可以通过ASSERT来检查参数是否满足要求。
1。C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。
已定义的宏 assert 指向另一个宏 NDEBUG,宏 NDEBUG 不是 <assert.h> 的一部分。如果已在引用 <assert.h> 的源文件中定义 NDEBUG 为宏名称,则 assert 宏的定义如下:
#define assert(ignore) ((void)0)
2.assert() 源码包括assert.h和assert.c
assert.h的源码:
/* assert.h - ANSI standard assert functions header *//* Copyright 1992 Wind River Systems, Inc. *//*
modification history
--------------------
01e,13nov92,smb fixed assert macro to not generate warnings
01d,22sep92,rrr added support for c++
01c,20jul92,smb added __assert extern.
01b,04jul92,jcf cleaned up.
01a,03jul92,smb written.
*/#ifdef __cplusplus
extern "C" {
#endif#include "types/vxANSI.h"#undef assert
#ifdef NDEBUG
#define assert(ignore) ((void) 0)
#else /* turn debugging on */#define _ASSERT_STR(z) _ASSERT_TMP(z)
#define _ASSERT_TMP(z) #z#if defined(__STDC__) || defined(__cplusplus)
extern void __assert (const char *msg);
#else
extern void __assert ();
#endif#define assert(test) ((void) \((test) ? ((void) 0) : \__assert("Assertion failed: "#test", file " \__FILE__ ", line "_ASSERT_STR(__LINE__)"\n")))
#endif /* NDEBUG */#ifdef __cplusplus
}
#endif
assert.c的源码:
/* assert.c - ANSI standard assert function *//* Copyright 1992 Wind River Systems, Inc. *//*
modification history
--------------------
01c,24oct92,smb removed some redundant documentation.
01b,20sep92,smb documentation additions.
01a,20jul92,smb written.
*//*
DESCRIPTIONINCLUDE FILES: stdio.h, stdlib.h, assert.hSEE ALSO: American National Standard X3.159-1989
NOMANUAL
*/#include "vxWorks.h"
#include "assert.h"
#include "stdio.h"
#include "stdlib.h"/******************************************************************************
*
* __assert - function called by the assert macro.
*
* INCLUDE: stdio.h assert.h
*
* RETURNS: never returns
* NOMANUAL
*/
void __assert(const char *msg /* message string */){fdprintf(2, "%s\n", CHAR_FROM_CONST (msg)); /* print msg to error stream */abort(); }
主要的代码部分:
#define assert(test) ((void) \((test) ? ((void) 0) : \__assert("Assertion failed: "#test", file " \__FILE__ ", line "_ASSERT_STR(__LINE__)"\n")))
二:树莓派执行.c文件:
使用putty远程连接树莓派,使用命令nano helloworld.c命令创建文件
代码部分:
#include <assert.h>
#include <stdio.h>int main()
{int a;char str[50];printf("请输入一个整数值: ");scanf("%d", &a);assert(a >= 10);printf("输入的整数是: %d\n", a);printf("请输入字符串: ");scanf("%s", str);assert(str != NULL);printf("输入的字符串是: %s\n", str);return(0);
}
使用gcc工具编译,运行
命令1:gcc helloworld.c
命令2:./a.out
输入值为1,断言处条件不满足,程序停止并显示相关信息。
三:Ubuntu 下的远程操作 :
1.将分配的 IP 地址交给其他同学,让其他同学用 putty 或 xshell 连接
2.用 ftp 上传和下载文件:
在 Windows 下打开终端命令,输入 ftp
open 192.168.43.9
dir # 查看目录
put litte.txt
get litte.txt
注意:“open” 后跟自己的 ip 地址,“put” 和 “get” 后跟需要上传的文件名。
put发送文件:
get 接收文件 (默认接收路径为 C:\Users\自己的用户名)
3.Xming 图形窗口访问
安装 Xming ,打开 XLanuch,默认一直下一步,然后会在右下角出现一个Xming的图标:
配置 putty:
a 在配置选项 connection -> SSH -> Auth -> X11 forwarding 处,将 Enable X11 forwarding 打钩
b 然后 session->host name 处填写服务器IP 地址(即Ubuntu的IP地址),再点击 open 连接远程服务器
c 连接成功后,输入命令 set DISPLAY=xxx.xxx.xxx.xxx:0 ,(xxx.xxx.xxx.xxx是你所使用电脑windows下配置的IP地址)
四 树莓派下的远程操作:
1.用 vnc viewer 访问树莓派。
2.新建一个用户classmate2。
sudo adduser classmate2
3.Xming 图形窗口访问(具体操作如上所述,只需将服务器IP 地址修改为树莓派用户为 classmate2 的 IP 地址)
su classmate2 # 切换用户
ifconfig # 查看ip地址
用 putty 连接,打开 chromium 浏览器(输入命令 chromium-browser)
五.用scp 命令,练习在Ubuntu系统与树莓派系统间进行文件复制传输。
1.在Ubuntu下的home路径下创建一个example.txt文件。
2.在树莓派,输入命令 “sudo nano /etc/ssh/sshd_config”,然后去掉 "PermitRootLogin prohibit-password "之前的注释,保存并退出。
3. 重启后输入命令 “systemctl restart sshd”,如果会报(Failed to start sshd.service: Unit sshd.service not found.)错误,先添加输入命令 “systemctl enable ssh.service”,然后在重启。
使用命令scp /home/example.txt JingL@192.168.43.143:/home/JingL将 Ubuntu 中的文件拷贝到树莓派中。
4.用户名@ 后跟的 ip地址为自己树莓派的 ip
在putty下使用ls命令看到目录下多了一个exqmple.txt文件
5.查看复制过来的数据:
PC平台(x86)Linux系统 与 嵌入式(ARM)Linux系统的准备以及远程操作相关推荐
- 嵌入式基于Linux电机控制,基于嵌入式arm+linux平台的直流电机调速控制系统.pdf
2012--2013 学年第 二 学期 物电 学院期末考试卷 嵌入式系统与应用 学号 : 姓名 : 班级 : 成绩: 评语: 装 订 (考试题目及要求) 嵌入式大作: 采用实验箱上的电位器作为信号输入 ...
- 嵌入式arm linux Java运行环境搭建和注意事项
嵌入式arm linux Java运行环境搭建和注意事项 我的开发硬件环境 搭建步骤 1. 下载 ORacle 公司的ejdk-8u211-linux-arm-sflt.tar.gz(软件浮点版本,这 ...
- 嵌入式arm linux设置登录用户和用户密码
最近在开发基于arm linux的集中器,出于保护系统的目的,需要给系统设置登录用户名和密码,因此就在网上查询了下怎样给嵌入式arm linux系统设置登录用户名和密码的方法,结果如下: 设置登录用户 ...
- 嵌入式arm linux产品,基于ARM——Linux的嵌入式产品平台构建
摘要: 随着计算机技术的发展,嵌入式系统已成为计算机领域一个重要组成部分,并成为近年来新兴的研究热点.ARM7TDMI是一种高效,低功耗的RISC处理器,以该内核为核心的 LPC2210 是一款基于以 ...
- 搭建嵌入式ARM完整系统
## 系统构建概述 对于移植到开发板上运行的linux系统,我们需要构建三个最基本的东西: 引导程序bootloader: 开发板运行机制内核文件系统: 文件管理系统 如下图,我们以mini2440的 ...
- 给嵌入式ARM+Linux的初学者
本文写给已经听过或接触过嵌入式并对此产生兴趣,可是对于嵌入式觉得无从下手的初学者. 0. 为什么要写这篇 我以前读研的时候选过一门嵌入式ARM的选修课,课程在实验室中进行,每个同学一个ARM开发板,老 ...
- arm linux 指纹识别,基于ARM—Linux指纹识别系统的设计.pdf
基于ARM-Linux指纹识别系统的设计.pdf 第 20卷 第 l5期 电子设计工程 2012年 8月 Vo1.20 No.15 ElectronicDesienEn~inee Aug.2012 基 ...
- arm linux 2.6下载,ARM+LINUX(montavista2.6.x)环境下SIMCOM5218使用
ARM+LINUX(montavista2.6.x)环境下 SIMCOM5218使用 http://blog.sina.com.cn/s/blog_4c796ed20100hpxg.html 一. 系 ...
- arm linux 进程调度,详解ARM Linux 2.4.x进程调度
Linux2.4.x是一个基于非抢占式的多任务的分时操作系统,虽然在用户进程的调度上采用抢占式策略,但是而在内核还是采用了轮转的方法,如果有个内核态的线程恶性占有CPU不释放,那系统无法从中解脱出来, ...
最新文章
- #define list_entry(ptr, type, member) \ container_of(ptr, type, member)
- jbpm binding类深入解析
- 哨兵机器人钢力士_哨兵胳膊都被卸了?巴西厂X战警钢力士正式公布
- 范例ppt_消防安全知识主题班会PPT,全内容高质量课件,完整框架精美套用
- ads design environment_ADS应用技巧3 — 画一个巴伦有多少种方法?
- ERROR: Cannot uninstall ‘PyYAML‘. 安装 fvcore
- html ajax 菊花,Ajax加载菊花loding效果
- java 定义utilities_java – 无法运行程序“/Applications/Utilities/...
- 最新QQ邮箱滑块JS逆向教程
- 碌人乘凉-- AERCHI 你所不懂的
- 【Spring笔记】使用注解开发
- websocket连接相关的几个问题
- 数据新闻的四大发展特点
- 记阿里电话面试失败过程
- 武汉理工大学计算机学院宿舍,武汉理工大学专业所属校区及新生住宿分布情况(v2.0)...
- Linux虚拟机安装谷歌浏览器和驱动
- 会员积分系统应该设几个等级?
- 夏天计算机自动关机,电脑频繁自动关机,原因可能出在这
- 湘潭大学数据库考试(郭云飞)
- sucess==happiness