acassis commented on a change in pull request #2736: URL: https://github.com/apache/incubator-nuttx/pull/2736#discussion_r563668593
########## File path: drivers/lwl_console.c ########## @@ -0,0 +1,314 @@ +/**************************************************************************** + * drivers/lwlconsole.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/config.h> + +#include <sys/types.h> +#include <errno.h> +#include <debug.h> + +#include <nuttx/arch.h> +#include <nuttx/fs/fs.h> +#include <syscall.h> + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Lightweight Link (lwl) + * ====================== + * + * Lightweight bidirectional communication between target and debug host + * without any need for additional hardware. + * + * Works with openOCD and other debuggers that are capable of reading and + * writing memory while the target is running. + * + * Principle of operation is simple; An 'upword' of 32 bits communicates + * from the target to the host, a 'downword' of the same size runs in the + * opposite direction. These two words can be in any memory that is + * read/write access for both the target and the debug host. A simple ping + * pong handshake protocol over these words allows up/down link + * communication. On the upside no additional integration is needed. On + * the downside it may be necessary to feed lwl with cycles to poll for + * changes in the downword, depending on the use case. + * + * Bit configuration + * ----------------- + * + * Downword (Host to target); + * + * A D U VV XXX + * + * A 31 1 - Service Active (Set by host) + * D 30 1 - Downsense (Toggled when there is data) + * U 29 1 - Upsense ack (Toggled to acknowledge receipt of uplink data) + * VV 28-27 2 - Valid Octets (Number of octets valid in the message) + * XXX 26-24 3 - Port in use (Type of the message) + * O2 23-16 8 - Octet 2 + * O1 15-08 8 - Octet 1 + * O0 07-00 8 - Octet 0 + * + * Upword (Target to Host); + * + * A 31 1 - Service Active (Set by device) + * D 30 1 - Downsense ack (Toggled to acknowledge receipt of downlink + * data) + * U 29 1 - Upsense (Toggled when there is data) + * VV 28-27 2 - Valid upword octets + * XXX 26-24 3 - Port in use (Type of the message) + * O2 23-16 8 - Octet 2 + * O1 15-08 8 - Octet 1 + * O0 07-00 8 - Octet 0 + * + */ + +/* Protocol bits */ + +#define LWL_GETACTIVE(x) (((x) & (1 << 31)) != 0) +#define LWL_ACTIVE(x) (((x)&1) << 31) + +#define LWL_DNSENSEBIT (1 << 30) +#define LWL_DNSENSE(x) ((x)&LWL_DNSENSEBIT) +#define LWL_UPSENSEBIT (1 << 29) +#define LWL_UPSENSE(x) ((x)&LWL_UPSENSEBIT) +#define LWL_SENSEMASK (3 << 29) + +#define LWL_GETOCTVAL(x) (((x) >> 27) & 3) +#define LWL_OCTVAL(x) (((x)&3) << 27) +#define LWL_GETPORT(x) (((x) >> 24) & 7) +#define LWL_PORT(x) (((x)&7) << 24) + +#define LWL_PORT_CONSOLE 1 +#define ID_SIG 0x7216A318 Review comment: Ok ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org