高通平台 android9 驱动开发gpio

时间: 2023-08-10 15:00:18 浏览: 52
对于高通平台上的 Android 9 驱动开发中的 GPIO,你可以按照以下步骤进行操作: 1. 首先,在设备树(Device Tree)中定义 GPIO 控制器和 GPIO 引脚。你需要在设备树文件中添加相关的节点来描述 GPIO 控制器的物理地址、中断信息等。同时,你还需要定义需要使用的 GPIO 引脚。 例如,你可以在设备树中添加以下节点来描述一个 GPIO 控制器: ``` gpio-controller { compatible = "vendor,controller-name"; reg = <0xaddress>; #gpio-cells = <2>; }; ``` 并且在需要使用的 GPIO 引脚节点中添加类似以下内容: ``` gpio_pin: gpio_pin { gpio-hog; gpios = <&gpio_controller gpio_number GPIO_ACTIVE_LOW>; output-low; }; ``` 2. 在驱动代码中获取 GPIO 控制器和 GPIO 引脚的句柄。你可以使用 `gpio_request()` 函数来请求一个 GPIO 引脚,并获得一个 GPIO 的句柄。这个函数需要传入 GPIO 引脚号和一个字符串标识符来描述这个 GPIO 引脚的用途。 例如,你可以使用以下代码来请求 GPIO 引脚: ``` struct gpio_desc *gpio_desc; int ret; gpio_desc = gpio_request(GPIO_NUMBER, "gpio_name"); if (IS_ERR(gpio_desc)) { ret = PTR_ERR(gpio_desc); // 处理错误 } ``` 3. 在驱动代码中对 GPIO 进行操作。一旦你获得了 GPIO 引脚的句柄,你可以使用一系列的函数来设置 GPIO 的方向(输入或输出)、读取或写入 GPIO 的电平状态等。 例如,你可以使用以下代码来设置 GPIO 引脚为输出,并将其设置为高电平: ``` ret = gpio_direction_output(gpio_desc, 1); if (ret < 0) { // 处理错误 } ret = gpio_set_value(gpio_desc, 1); if (ret < 0) { // 处理错误 } ``` 4. 最后,在驱动代码中释放 GPIO 引脚的句柄。当你不再需要使用 GPIO 引脚时,记得使用 `gpio_free()` 函数来释放它。 例如,你可以使用以下代码来释放 GPIO 引脚句柄: ``` gpio_free(gpio_desc); ``` 以上是在高通平台上开发 Android 9 驱动中使用 GPIO 的一般步骤。具体的实现可能会因平台和硬件的差异而有所不同,你需要参考相关的文档和代码来进行开发。

相关推荐

RS485是一种串行通信协议,常用于远距离、高速数据传输。GPIO字符驱动是一种Linux驱动程序,用于控制GPIO信号,可以通过该驱动程序实现串口通信控制。下面是在Linux系统中开发RS485的java驱动和GPIO字符驱动的步骤: 1. 配置RS485硬件 需要在串口设备上配置RS485硬件,包括串口波特率、数据位、校验位和停止位等参数的设置,以及RS485的通信模式(半双工或全双工)。 2. 编写Java驱动程序 编写Java程序,使用Java串口通讯API实现与RS485设备的数据交互。具体步骤参考上面的Java串口通讯详解。 3. 编写GPIO字符驱动程序 编写Linux字符驱动程序,用于控制GPIO信号。GPIO字符驱动程序需要实现open、read、write和release等函数,以支持用户空间应用程序对GPIO信号的读写操作。具体步骤如下: (1)定义GPIO信号的编号和方向(输入或输出); (2)在驱动程序的init函数中注册GPIO信号; (3)在驱动程序的open函数中初始化GPIO信号的方向; (4)在驱动程序的read函数中读取GPIO信号的值; (5)在驱动程序的write函数中写入GPIO信号的值; (6)在驱动程序的release函数中释放GPIO信号的资源。 4. 编译和加载驱动程序 使用gcc编译GPIO字符驱动程序,生成.so文件。使用insmod命令加载驱动程序,即可启用GPIO字符驱动。在Java程序中调用GPIO信号的读写操作,可以实现对RS485设备的控制。 总之,通过Java驱动和GPIO字符驱动程序的结合,可以实现RS485设备的高效、稳定的数据传输。
在 Android 中,GPIO(General Purpose Input/Output)驱动程序的设计流程如下: 1. 确定 GPIO 引脚:首先,确定要使用的 GPIO 引脚,这取决于硬件平台和需求。每个 GPIO 引脚都有一个唯一的标识符,例如 GPIO1_IO23。 2. 确定 GPIO 功能:确定 GPIO 引脚的功能,例如输入(Input)或输出(Output)。输入模式用于读取外部设备的状态,输出模式用于控制外部设备。 3. 定义 GPIO 设备:在 Android 的设备树(Device Tree)中,定义 GPIO 设备节点。这包括引脚号、功能、中断等属性。 4. 注册 GPIO 设备:在设备树中注册 GPIO 设备节点,以便内核可以识别和管理这些设备。 5. 配置 GPIO:在驱动程序中,配置 GPIO 的功能和属性。这包括设置引脚的输入/输出模式、中断触发方式、电平状态等。 6. 控制 GPIO:通过读取或写入 GPIO 寄存器来控制 GPIO 引脚。对于输出模式,可以设置引脚的电平状态;对于输入模式,可以读取引脚的电平状态。 7. 处理中断:如果配置了中断触发方式,并且有外部设备触发了相应的中断,驱动程序需要适当地处理中断事件。 8. 销毁 GPIO 设备:在驱动程序退出或设备不再需要时,销毁 GPIO 设备并释放相关资源。 需要注意的是,GPIO 驱动程序的具体实现可能会有所不同,取决于硬件平台和驱动程序的要求。开发者可以参考硬件供应商提供的文档和 Android 官方文档来了解更详细的 GPIO 驱动程序设计流程。
以下是高通 MSM8953 SoC 上使用 DTS(Device Tree Source)描述的 GPIO 驱动实例: &tlmm { gpio_keys: gpio-keys { compatible = "gpio-keys"; #address-cells = <1>; #size-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&button_pins>; status = "okay"; button@4 { label = "power"; gpios = <&tlmm 4 GPIO_ACTIVE_LOW>; linux,code = <KEY_POWER>; debounce-interval = <50>; gpio-key,wakeup; gpio-key,wakeup-source; }; button@3 { label = "volume_up"; gpios = <&tlmm 3 GPIO_ACTIVE_LOW>; linux,code = <KEY_VOLUMEUP>; debounce-interval = <50>; }; button@2 { label = "volume_down"; gpios = <&tlmm 2 GPIO_ACTIVE_LOW>; linux,code = <KEY_VOLUMEDOWN>; debounce-interval = <50>; }; }; button_pins: button_pins { pins = "gpio4", "gpio3", "gpio2"; function = "gpio_in"; drive-strength = <2>; bias-disable; }; }; 在上面的示例中,我们定义了一个名为“gpio_keys”的节点,它表示一个 GPIO 按键设备。在该节点下,我们定义了三个名为“button@*”(*表示数字)的子节点,它们分别表示三个按键。每个按键节点都指定了其使用的 GPIO 引脚编号,所以我们需要在该文件中定义一个名为“button_pins”的节点,它表示我们将使用哪些 GPIO 引脚。在“button_pins”节点中,我们指定了使用 GPIO 引脚 2、3 和 4,它们的功能为“gpio_in”,表示我们将使用它们作为输入引脚,而不是输出引脚。最后,我们指定了每个按键的 Linux 按键代码(即在 Linux 内核中定义的按键码)、抖动时间和唤醒源等属性。 当系统启动时,内核会根据设备树中的 GPIO 配置自动加载相应的 GPIO 驱动程序。在本例中,内核将加载“gpio-keys”驱动程序,并将其绑定到我们定义的“gpio_keys”节点上。这样,我们就可以在 Linux 系统中使用这三个按键了。
在设备树中配置GPIO按键驱动需要完成以下几个步骤: 1. 定义GPIO节点 在设备树中需要定义GPIO节点,节点包含GPIO的编号、使用模式、中断类型等信息。例如: gpio-keys { compatible = "gpio-keys"; pinctrl-names = "default"; pinctrl-0 = <&gpio_keys_pins>; #address-cells = <1>; #size-cells = <0>; power { label = "Power button"; gpios = <&gpio1 0 GPIO_ACTIVE_LOW>; linux,code = <KEY_POWER>; debounce-interval = <50>; interrupt-parent = <&gpio1>; interrupts = <0 IRQ_TYPE_EDGE_FALLING>; }; }; 2. 定义中断控制器节点 中断控制器节点是一个必要的节点,它描述了中断控制器的类型、中断号等信息。例如: gpio_keys_pins: gpio_keys_pins { gpio-key1 { gpio-hog; gpios = <&gpio1 0 GPIO_ACTIVE_LOW>; output-low; line-name = "Power Button"; }; }; 3. 配置中断控制器 在设备树中需要配置中断控制器,使其能够正确的处理GPIO中断。例如: gpio1: gpio@4804c000 { compatible = "ti,omap4-gpio"; reg = <0x4804c000 0x1000>; interrupts = <34>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; interrupt-parent = <&intc>; }; 4. 在驱动中解析设备树 在Linux内核驱动中需要解析设备树,获取GPIO节点的信息,从而正确的控制GPIO。例如: static int gpio_keys_probe(struct platform_device *pdev) { struct device_node *np = pdev->dev.of_node; struct gpio_keys_drvdata *ddata; struct input_dev *input_dev; struct gpio_desc *desc; int i, err; ddata = devm_kzalloc(&pdev->dev, sizeof(*ddata), GFP_KERNEL); if (!ddata) return -ENOMEM; input_dev = devm_input_allocate_device(&pdev->dev); if (!input_dev) return -ENOMEM; input_dev->name = "gpio-keys"; input_dev->id.bustype = BUS_GPIO; for_each_child_of_node(np, desc) { const char *label; err = of_property_read_string(desc, "label", &label); if (err) continue; err = of_property_read_u32(desc, "linux,code", &ddata->keycodes[i]); if (err) continue; ddata->key_count++; err = gpiod_direction_input(desc); if (err < 0) continue; ddata->gpio_descs[i] = desc; input_set_capability(input_dev, EV_KEY, ddata->keycodes[i]); i++; } input_dev->keycode = ddata->keycodes; input_dev->keycodesize = sizeof(ddata->keycodes[0]); input_dev->keycodemax = ddata->key_count; ddata->input_dev = input_dev; platform_set_drvdata(pdev, ddata); err = input_register_device(input_dev); if (err) { dev_err(&pdev->dev, "Failed to register input device: %d\n", err); return err; } return 0; } 以上就是在Android系统中配置GPIO按键驱动的设备树方法。
### 回答1: Android系统的GPIO(General Purpose Input/Output)读取是通过底层硬件接口实现的。GPIO是一种通用输入/输出接口,可以用于控制和读取外部电路中的信号。 要在Android中读取GPIO,首先需要加载GPIO驱动程序。在Android的内核配置文件中,可以启用GPIO子系统来支持GPIO的操作。然后,在设备初始化时加载GPIO驱动。 加载后,可以使用Java Native Interface (JNI)来从Java层调用底层C/C++代码。在C/C++代码中,可以通过特定的方法来读取有关GPIO引脚的状态。 对于某些特定的硬件平台,可能会提供特定的GPIO库或框架,以便更方便地读取和控制GPIO。这些库可以提供更高级的API,以简化GPIO的读取操作。 一般来说,读取GPIO需要以下步骤: 1. 找到GPIO的设备文件路径,通常位于/sys/class/gpio/目录下。 2. 打开对应的GPIO设备文件,并设置文件读取模式。 3. 读取GPIO引脚的状态,可以使用read()方法来实现。 4. 关闭GPIO设备文件。 需要注意的是,要读取GPIO引脚的状态,需要确保已正确配置GPIO的输入模式,并将外部电路与GPIO引脚正确连接。 在读取GPIO时,需要小心防止并发访问和资源竞争的问题。可以使用互斥锁或其他同步机制来保护对GPIO的访问。 总之,要在Android上读取GPIO,需要加载GPIO驱动程序并调用底层代码来读取GPIO引脚的状态。使用适当的方法和同步机制可以确保正确和安全地读取GPIO。 ### 回答2: 在Android系统中,可以通过使用Java语言和相关API来读取GPIO(通用输入输出)。 首先,要读取GPIO,需要在Android设备的硬件上进行设置。通常,GPIO是通过物理引脚连接到设备上的电子元件(如开关、传感器等),在Android系统中,需要确认设备的GPIO引脚是否可用以及如何访问它们。这通常需要对硬件做一些配置或者修改设备的设备树。 一旦GPIO引脚可用并正确设置,就可以通过使用Android的GPIO API来读取。Android提供了一些类和方法,可以轻松地读取GPIO引脚的状态。 可以通过使用GpioManager类来管理GPIO引脚。可以通过调用GpioManager.openGpio()方法来打开指定的GPIO引脚。然后,可以使用Gpio对象的getValue()方法来读取引脚的状态,返回值可以是高电平(1)或低电平(0)。 下面是一个简单的示例代码: java GpioManager gpioManager = new GpioManager(); Gpio gpio = gpioManager.openGpio(GPIO_PIN_NUMBER); int value = gpio.getValue(); if (value == 1) { // GPIO引脚为高电平状态 } else { // GPIO引脚为低电平状态 } gpio.close(); 需要注意的是,GPIO的读取操作通常需要在Android应用的后台线程中进行,避免阻塞主线程。如果需要持续读取GPIO的状态,可以使用循环或者定时器来实现。 总结起来,要在Android中读取GPIO,首先需要确认GPIO引脚是否可用并配置正确,然后可以使用Android的GPIO API来管理和读取引脚的状态。 ### 回答3: Android是基于Linux内核的操作系统,可以通过编写驱动程序来读取GPIO(General Purpose Input/Output)引脚。下面是一个简单的300字中文回答。 在Android中,可以使用JNI(Java Native Interface)来访问C/C++编写的底层代码,从而控制硬件设备。要读取GPIO引脚,首先需要编写一个JNI方法,该方法将在Java代码中被调用。 在C/C++代码中,可以使用Linux内核提供的GPIO接口来控制GPIO引脚。可以使用sysfs接口(一种文件系统接口)来读取和设置GPIO的值。通过读取文件的方式,可以获得GPIO引脚的状态。 首先,要找到相应GPIO引脚所对应的GPIO编号。在Android中,可以通过查看设备树或者内核文档来确定GPIO编号。然后,需要通过打开/sys/class/gpio/gpioN目录,其中N是GPIO编号,来访问GPIO引脚。 通过读取/sys/class/gpio/gpioN/value文件可以获取到GPIO引脚的值,文件中的值为0表示低电平,为1表示高电平。可以使用标准的Linux文件读取函数来读取该文件。 在C/C++代码中,可以通过写入/sys/class/gpio/unexport文件来取消导出GPIO引脚,以释放资源。这是很重要的,因为GPIO资源是有限的。 使用这个方法可以在Android中读取GPIO引脚的状态。然后,可以通过JNI方法将GPIO引脚的状态传递给Java代码,以供Android应用程序使用。 当然,读取GPIO引脚的过程可能需要特定的权限或者在root权限下进行。因此,在开发过程中需要注意相关的权限设置和安全性考虑。 以上就是使用Android读取GPIO引脚的简单介绍。希望对你有所帮助!
### 回答1: GPIO是英文General Purpose Input/Output的缩写,翻译过来就是通用输入输出。Linux内核提供了GPIO驱动框架,可以通过该框架来控制硬件上的GPIO,实现对外设的控制。 在Linux内核中,GPIO驱动可以分为两类:基于平台的GPIO驱动和基于设备的GPIO驱动。基于平台的GPIO驱动是针对整个平台的GPIO控制,而基于设备的GPIO驱动则是针对单个设备的GPIO控制。 在使用GPIO驱动时,需要先找到所使用的GPIO引脚的编号,并将其映射到内存中的地址。然后通过读写内存中的寄存器来控制GPIO的状态。 对于GPIO的操作可以通过Linux内核提供的sysfs接口来实现。在sysfs中,每个GPIO都被表示为一个文件,可以通过读写文件来进行GPIO的操作。 需要注意的是,在使用GPIO驱动时,需要谨慎操作,避免对硬件造成损坏。同时,还需要了解所使用的硬件设备的特性和限制,以确保GPIO驱动的正确使用。补充说明: 在Linux内核中,GPIO驱动主要由GPIO子系统和GPIO控制器驱动两部分组成。GPIO子系统提供了一个通用的接口,用于操作GPIO控制器驱动,而GPIO控制器驱动则是实际控制硬件的部分。 GPIO子系统可以分为两个部分:GPIO框架和GPIO API。GPIO框架是一个通用的框架,用于管理GPIO控制器和GPIO设备,它定义了一些数据结构和函数接口,用于注册和管理GPIO控制器和GPIO设备。GPIO API是一个用户空间的API,提供了一些函数接口,用于操作GPIO。 GPIO控制器驱动是针对特定的GPIO控制器的驱动程序,它负责实际控制GPIO的硬件操作。在Linux内核中,每种GPIO控制器都有一个对应的GPIO控制器驱动程序。当使用GPIO时,首先需要通过GPIO子系统将GPIO控制器驱动注册到系统中,然后才能使用GPIO API对GPIO进行操作。 需要注意的是,在使用GPIO驱动时,需要注意GPIO的电气特性,避免对硬件造成损坏。同时,在进行GPIO操作时,还需要注意GPIO的并发访问和竞争问题,以确保系统的正确性和稳定性。 ### 回答2: Linux GPI驱动指的是Linux系统中通过General Purpose Input/Output(GPIO)接口与硬件设备进行交互的驱动程序。GPIO接口是一组通用的、可编程的多功能引脚,可用于连接各种外部设备,例如开关、LED、传感器、驱动器等。 Linux GPIO驱动可以实现对GPIO引脚的读写操作、中断处理等功能。它不仅可以与单片机等嵌入式设备进行通信,还可与各种外接硬件设备进行连接和通信。 在Linux系统中,用户可以通过/sys/class/gpio文件系统来访问GPIO引脚。在使用GPIO驱动时,用户需要首先加载相应的内核模块,然后使用GPIO API来对引脚进行读写操作或开启中断。 GPIO驱动程序需要实现以下功能: 1. 查询GPIO可用性及分配资源。通常,由于GPIO是多路的,因此设备需要分配资源共享GPIO。 2. 初始化GPIO引脚,包括定义方向及设置上下拉电阻等。 3. 实现GPIO引脚的读写操作。 4. 解除分配资源并释放相关资源。 正常情况下,GPIO驱动程序会提供一个设备文件,用户可以通过读写该文件实现GPIO引脚的操作。 总之,Linux GPIO驱动具有良好的可移植性和稳定性,可以方便地与其他硬件设备进行交互,因此被广泛应用于各种嵌入式设备和嵌入式系统中。 ### 回答3: Linux GPIO驱动是一种在嵌入式系统中实现通用输入输出(GPIO,General Purpose Input/Output)功能的软件驱动。GPIO是一种非常有用的硬件资源,它可以连接到外部设备,例如LED灯、按键和触摸屏等。 Linux内核支持GPIO操作,当你的嵌入式系统上有GPIO设备时,你可以利用GPIO来读取或设置其状态。驱动程序能够将GPIO标记为输入或输出,并且它们可以在运行时进行配置。 在Linux中,一般有两种方式将GPIO驱动程序添加到内核中:一种是将其编译到内核中,另一种是将其作为模块加载。 GPIO驱动程序等价于操作系统提供的设备文件,例如/dev/gpiochip0,它允许用户空间应用程序访问GPIO。这些设备文件可用于读取或写入GPIO状态。例如,要控制一个LED,需要将GPIO设置为输出模式,然后将其电平设置为高或低即可。 除此之外,GPIO驱动程序也可以实现中断(interrupt)机制,GPIO的状态变化时可以产生中断事件,这常用于处理GPIO键盘或GPIO中断信号的应用场景。 总结来说,Linux内核支持GPIO驱动需要有以下几个步骤:配置GPIO硬件;添加驱动程序;编写用户空间应用程序,按需要读取或设置GPIO状态来和外设交互。GPIO驱动程序是嵌入式系统中非常必要的组成部分,它们能够随时提供接口以方便对外部设备的读写访问。

最新推荐

Zynq正确的使用GPIO

在zynq的开发中,有两种GPIO,一种是zynq自带的外设(MIO/EMIO),存在于PS中,第二种是PL中加入的AXI_GPIO IP核。

嵌入式实验报告 stm32f103 跑马灯实验 GPIO口操作

熟悉编译环境,尝试独立进行工程的创建、编译、下载。通过阅读 STM32 芯片手册了解关于 GPIO 的相关内容,并且通过编程实现 LED 流水灯控制。

STM32中GPIO的8种工作模式

GPIO_Mode_AIN 模拟输入、GPIO_Mode_IN_FLOATING 浮空输入、GPIO_Mode_IPD 下拉输入 、GPIO_Mode_IPU 上拉输入 、GPIO_Mode_Out_OD 开漏输出、GPIO_Mode_Out_PP 推挽输出、GPIO_Mode_AF_OD 复用开漏输出、GPIO_Mode_...

linux GPIO中断使用说明 V1.02.pdf

linux GPIO中断程序讲解、示例。讲解原理及配置步骤。设备树修改、添加驱动、内核编译更新、用户控件捕捉中断事件

LEDS-GPIO驱动中遇到的问题总结

LEDS-GPIO驱动中遇到的问题总结:unlocked_ioctl与ioctl的区别,miscdevice函数,#ifdef 语句1 // 程序2 #endif GPX三个控制寄存器,

基于at89c51单片机的-智能开关设计毕业论文设计.doc

基于at89c51单片机的-智能开关设计毕业论文设计.doc

"蒙彼利埃大学与CNRS联合开发细胞内穿透载体用于靶向catphepsin D抑制剂"

由蒙彼利埃大学提供用于靶向catphepsin D抑制剂的细胞内穿透载体的开发在和CNRS研究单位- UMR 5247(马克斯·穆塞隆生物分子研究专长:分子工程由Clément Sanchez提供于2016年5月26日在评审团面前进行了辩护让·吉隆波尔多大学ARNA实验室CNRS- INSERM教授报告员塞巴斯蒂安·帕波特教授,CNRS-普瓦捷大学普瓦捷介质和材料化学研究所报告员帕斯卡尔·拉斯特洛教授,CNRS-审查员让·马丁内斯蒙彼利埃大学Max Mousseron生物分子研究所CNRS教授审查员文森特·利索夫斯基蒙彼利埃大学Max Mousseron生物分子研究所CNRS教授论文主任让-弗朗索瓦·赫尔南德斯CNRS研究总监-蒙彼利埃大学Max Mousseron生物分子研究论文共同主任由蒙彼利埃大学提供用于靶向catphepsin D抑制剂的细胞内穿透载体的开发在和CNRS研究单位- UMR 5247(马克斯·穆塞隆生物分子研究专长:分子工程由Clément Sanchez提供�

设计一个程序有一个字符串包含n个字符 写一个函数 将此字符串中从第m个字符开始的全部字符复制成为另一个字符串 用指针c语言

以下是用指针实现将字符串中从第m个字符开始的全部字符复制成为另一个字符串的C语言程序: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> void copyString(char *a, char *b, int n, int m); int main() { int n, m; char *a, *b; printf("请输入字符串长度n:"); scanf("%d", &n); a = (char*)malloc(n * sizeof(char)); b =

基于C#多机联合绘图软件的实现-毕业设计论文.doc

基于C#多机联合绘图软件的实现-毕业设计论文.doc

4G车载网络中无线电资源的智能管理

4G车载网络中无线电资源的智能管理汽车网络从4G到5G的5G智能无线电资源管理巴黎萨克雷大学博士论文第580号博士学院博士专业:网络、信息与通信研究单位:巴黎萨克雷大学,UVSQ,LI PARAD,78180,法国伊夫林省圣昆廷参考:凡尔赛大学-伊夫林省圣昆廷论文于11月30日在巴黎萨克雷发表并答辩2021年,由玛丽亚姆·阿卢奇·马迪陪审团组成Pascal Lorenz总裁上阿尔萨斯大学大学教授Mohamed Yacine Ghamri-Doudane拉罗谢尔大学报告员和审查员教授Rami Langar报告员和审查员马恩河谷大学Oyunchimeg SHAGDARVEDECOM研发(HDR)团队负责人审查员论文方向Samir TOHME博士生导师巴黎萨克雷大学名誉教授UVSQ/LI- PARADKALLEL KHEMIRI共同监督巴黎萨克雷UVSQ/大卫Guy Pujolle受邀索邦大学Tara Yahiya邀请巴黎萨克雷大学/LISN高级讲师(HDR)博士论文NNT:2021UPASG061谢谢你首先,我要感谢我的论文导师M.萨米�